C会自动释放没有指针的内存吗?
假设我们单独运行这段代码:
malloc(1024);
这会导致内存泄漏,还是C会自动知道释放没有引用的指针?
换句话说,我可以避免将其分配给指针吗?
void *p = malloc(1024); free(p);
在您编写的动态分配内存的任何代码中,您对分配的任何内存块都有2个职责 :(1) 始终保留指向内存块起始地址的指针,因此,(2)当它为no时可以释放它需要更久。 释放内存取决于你 。
如果为当前指向现有内存块的指针分配新的内存块而没有先释放该块,则刚刚覆盖指针所占内存块的起始地址 (违反上述规则1 )并且你现在已经失去了释放原始块的能力 – 这是你的内存泄漏。
这是一个内存泄漏。 C绝对没有内存管理(除了C编译器为变量分配堆栈空间)。