【发布时间】:2009-05-26 16:14:20
【问题描述】:
在 C 中,在释放从函数返回的内存时,这是更好的做法:
- 提供一个“析构函数”来封装对 free() 的调用。
- 要求用户自己释放()返回的指针。
例如,打开和关闭文件:
FILE* f = fopen("blah", "w");
fclose(f);
这是否可取:
FILE* f = fopen("blah", "w");
fclose(f);
free(f);
警告:不要在 FILE 指针上调用 free()。我在这里只使用它一个假设的实现。
如果局部变量指向返回的内存呢? free() 在这里有害吗? (或者也许永远不应该这样做)
FILE f = &fopen("blah", "w");
fclose(&f);
【问题讨论】:
-
你的最后一个例子('FILE f=&fopen("blah", "w")')是假的。不要这样做。
-
至少确保你发布了可编译的代码