【发布时间】:2013-10-31 10:51:23
【问题描述】:
我是 C 新手。我已经看到在许多示例中 malloc() 总是与 free() 配对。但是如果我做这样的事情:比如 *p = "a string" ,我可以释放指针 p 吗?它会导致内存泄漏问题吗?
编辑:感谢所有回复! 所以我的问题变成了:如果我在函数中有 *p = "a string",这是否意味着当函数结束时编译器将自动“释放”用于此函数调用的所有内存,所以我不必须手动管理任何东西来处理内存?
【问题讨论】:
-
你可以释放它,但如果你不释放它就不会泄漏
-
只有malloc动态分配的内存,calloc函数我们需要使用
free()函数显式释放。 -
如果您使用
char *p = "a string";,那么您以后就不会释放该内存。在这种情况下,这是由编译器管理的,因为您没有使用malloc或calloc。 -
@GrijeshChauhan - 只有malloc、calloc动态分配的内存
fopen()之类的东西呢? -
@ryyker 你在
fp上申请free()吗?!!!我使用 fclose
标签: c pointers memory free memory-leaks