int main() {
char *p = (char *)malloc(10);
char *newp = (char *)realloc(p, 20); // realloc不能保证newp与p指向同一块内存
if (newp) {
p = newp;
}
free(p);
return 0;
}
上述代码,如果注释4~6行将引发内存泄漏,free只释放了p生成的内存空间,而realloc生成的内存没有释放。
本文探讨了C++中使用`malloc`和`realloc`进行内存分配时,如何避免内存泄漏的问题。代码示例展示了当`realloc`未能确保与原指针指向同一内存时,若不正确处理可能导致的内存泄漏。程序员应当注意在使用`realloc`后更新指针,并确保释放所有不再需要的内存。
384

被折叠的 条评论
为什么被折叠?



