我正在跟着这个
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;
为了清楚起见省略了空的检查.