首页 > 解决方案 > 如何检查C中的指针是否空闲?

问题描述

有没有办法检查指针之前是否空闲?

例如,如果我运行此代码:

int* p = (int*)malloc(1000);
free(p);
p = (int*)realloc(p, 2000);

我得到错误:

*** Error in `./main': realloc(): invalid old size: 0x00000000012ab010 ***
...

我希望有机会p在致电之前进行检查realloc以避免此类错误。

标签: c

解决方案


以下是您的检查方式:您之前释放过它吗?如果是这样,它已被释放。如果没有,不。

C 不会为您跟踪这一点,因此如果您忘记了是否已释放相关的内存,您可能想要NULL输出任何指针。free

除非您明确说明您希望它做更多事情,否则 C 会做最少的事情:

free(p);
p = NULL;

现在您可以进行测试,但请记住,这样做是您的责任,因此如果此行为很重要,您必须始终如一地执行此操作。


推荐阅读