【发布时间】:2016-07-15 23:09:53
【问题描述】:
假设我们单独运行这段代码:
malloc(1024);
这会导致内存泄漏,还是 C 会自动知道释放没有引用的指针?
换句话说,我可以避免将它分配给指针吗?
void *p = malloc(1024);
free(p);
【问题讨论】:
-
您所说的称为垃圾收集器。 C(通常)没有这样的功能。这里的规则很简单:如果对 malloc()(和其他 *alloc() 函数)的每次调用与对 free() 的调用恰好匹配,则没有泄漏。
-
如果不将
malloc()的结果赋值给变量,如何访问分配的内存? -
换个说法,1024字节的内存你不使用为什么要分配?
-
实际的应用程序是我嵌套几个函数调用的地方,每个函数调用都返回新的指针。喜欢
bignum *add(bignum *a, bignum *b)。 -
@cchan3141 声明
const bignum* const a之类的参数并且不要在函数中更改它们,然后释放由调用者决定
标签: c pointers memory-management