【问题标题】:How to check if a pointer is free in C? [duplicate]如何检查C中的指针是否空闲? [复制]
【发布时间】:2018-08-16 02:40:07
【问题描述】:

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

例如,如果我运行这段代码:

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

我得到错误:

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

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

【问题讨论】:

标签: c


【解决方案1】:

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

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

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

free(p);
p = NULL;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多