代码之家  ›  专栏  ›  技术社区  ›  Fomalhaut

如何在C中检查指针是否空闲?[副本]

c
  •  0
  • Fomalhaut  · 技术社区  · 6 年前

    例如,如果我运行以下代码:

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

    我知道错误:

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

    p 打电话之前 realloc 以避免这种错误。

    1 回复  |  直到 6 年前
        1
  •  9
  •   tadman    6 年前

    你是这样检查的:你以前放过吗?如果是的话,它已经被释放了。如果没有,就没有。

    C没有为你跟踪,所以你可能想 NULL free 如果你忘记了是否已经释放了相关的内存。

    C做的是最起码的事情,除非你明确指出你希望它做更多的事情:

    free(p);
    p = NULL;