chr*_*yal 10 c memory pointers memory-management
我正在学习本教程(http://theocacao.com/document.page/234).我对这一段感到困惑,主要是与calloc相关的行:
我们还可以使用malloc函数的变体,称为calloc.calloc函数有两个参数,一个值计数和一个基值大小.它还会在返回指针之前清除内存,这有助于避免在某些情况下出现不可预测的行为和崩溃:
最后一行让我感到困惑.清除记忆是什么意思?
Jar*_*Par 21
函数calloc将确保返回的内存中的所有字节都设置为0. malloc没有这样的保证.它返回的数据可以并且将包含看似随机的数据.
这种区别对于数据成员的初始化非常有用.如果0是结构中所有值的良好默认值,则calloc可以简化结构创建.
Foo* pFoo = calloc(1, sizeof(Foo));
Run Code Online (Sandbox Code Playgroud)
与
Foo* pFoo = malloc(sizeof(Foo));
pFoo->Value1 = 0;
pFoo->Value2 = 0;
Run Code Online (Sandbox Code Playgroud)
为清楚起见,省略了空检查.