在 C 中,在释放从函数返回的内存时,这是更好的做法:
- 提供一个“析构函数”来封装对 free() 的调用。
- 要求用户自己 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);