【发布时间】:2018-05-06 23:44:30
【问题描述】:
调用free()函数后,动态分配内存的指针指向什么。
指针是否指向 NULL,或者它仍然指向它在释放之前指向的相同位置。
free() 的实现是否对此有某种标准,或者它在不同平台上的实现方式不同。
uint8_t * pointer = malloc(12);
printf("%p", pointer); // The current address the pointer points to
free (pointer);
printf("%p", pointer); // must it be NULL or the same value as before ?
编辑: 我知道 printf 会产生相同的结果,我只是想知道我是否可以依靠不同的实现。
【问题讨论】:
-
为什么要在 free() 之后 printf?为什么要指望它?
-
@VinayakGarg:我认为这更像是一个调试打印语句。
-
@VinayakGarg 我正在编写嵌入式设备,并在某项任务中分配内存。一旦我得到一个更高优先级并且还需要分配内存的中断,就会出现问题。我需要在不知道分配成功与否的情况下释放之前分配的内存。
标签: c memory-management