Tag: 惯用语

通常的做法是将重新分配的内存设置为0吗?

在一本C书中,我在一个示例中找到了实现动态resize数组的代码(简化): void *contents = realloc(array->contents, array->max * sizeof(void *)); array->contents = contents; memset(array->contents + old_max, 0, array->expand_rate + 1); 资料来源: 学习C艰难之路 – 第34章 我对memset在这里应该实现的内容感到有些惊讶,但后来我才知道它是为了“重新分配”重新分配的内存而使用的。 我用Google搜索,以便找出,如果这是我应该在realloc之后做的事情,并找到了关于此的stackoverflow答案: 可能没有必要做memset […] 但是,即使你想“将其归零所以一切都很好”,或者真的需要新的指针为NULL :C标准并不保证all-bits-zero是空指针常量(即NULL ) ,所以memset()无论如何都不是正确的解决方案。 来源: 如何在realloc之后将新内存清零 然后建议的解决方案而不是memset使用for循环以便将内存设置为NULL 。 所以我的问题是,因为memset并不一定意味着将值设置为NULL并且for循环解决方案看起来有点单调乏味 – 是否真的需要设置新分配的内存?