在C中分配的指针上进行malloc安全吗?

Ben*_*ett 0 c memory-leaks memory-management

我正在使用C库,并且正在对内存管理非常谨慎。我有一个为指针分配内存的函数,并且试图覆盖指针已经分配的情况。我想知道是否需要在分配指针之前释放指针。

char *x = (char *) malloc(12);
// ...
free(x);
x = (char *) malloc(12);
Run Code Online (Sandbox Code Playgroud)

我不确定是否free(x)有必要。

use*_*751 5

没有分配指针。

char *x = (char *) malloc(12);声明一个指针x。然后,它分配12个字节的内存,并x指向12个字节的内存。

free(x);释放12个字节的内存。x仍然指向现在已释放的12个字节的内存。

x = (char *) malloc(12);分配另外12个字节的内存,并x指向新的12个字节的内存。

如果删除free(x);了该内存,则将分配2个12字节的内存批次,而不释放第一批内存。这是否是内存泄漏取决于程序的工作方式-如果您还不使用内存来处理某些事情,那仅仅是内存泄漏。