【发布时间】:2014-07-03 17:38:54
【问题描述】:
如果我使用以下代码char * foo = "words"。我应该先打电话给free():foo = "two words"; 。这个任务是如何工作的?
是否释放了包含字符串“word”的内存,然后分配了足够的内存来保存字符串“two words”,然后将 foo 设置为指向新字符串。我只是想确保我的代码尽可能高效并且没有任何内存泄漏。
【问题讨论】:
-
如果你调用
malloc(或者如果你调用的函数调用了),那么你应该调用free。如果你不打电话给malloc,你就不应该打电话给free。 -
确保阅读字符串文字和字符缓冲区,以及不同类型的存储持续时间。
-
char *foo只是一个指针。foo实际上并没有保存字符串,对它的赋值不会分配或取消分配任何东西——它只是改变了它指向的内容。
标签: c++ c memory-management memory-leaks