与calloc vs malloc有关的C教程问题

前端之家收集整理的这篇文章主要介绍了与calloc vs malloc有关的C教程问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在跟着这个 tutorial( http://theocacao.com/document.page/234).我对这一段感到困惑,主要是与calloc有关的行:

We can also use a variation of the malloc function,called calloc. The calloc function takes two arguments,a value count and the base value size. It also clears the memory before returning a pointer,which is useful in avoiding unpredictable behavior and crashes in certain cases:

最后一幕让我感到困惑清除记忆是什么意思?

解决方法

函数calloc将确保返回的内存中的所有字节都设置为0. malloc不会有这样的保证.它返回的数据可以并且将由看似随机的数据组成.

该区别对于数据成员的初始化非常有用.如果0对于struct中的所有值都是一个很好的默认值,那么calloc可以简化结构创建.

Foo* pFoo = calloc(1,sizeof(Foo));

Foo* pFoo = malloc(sizeof(Foo));
pFoo->Value1 = 0;
pFoo->Value2 = 0;

为了清楚起见省略了空的检查.

猜你在找的C&C++相关文章