如何检查C中的指针是否空闲?

时间:2018-08-16 02:40:07

标签: c

有没有一种方法可以检查指针是否以前是空闲的?

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

async function liveFeed_update() { 
   var symbol_in_table = "...";
   var num_row = 0;

   var results = await con.query(symbol_in_table);

   results.forEach(function(result) {
     num_row = + result[0].total;
     console.log("Number of Rows in inner level:", num_row);
   });

   console.log("Number of Rows in outer level:",+ num_row);
 }

我得到了错误:

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

我希望有机会在致电*** Error in `./main': realloc(): invalid old size: 0x00000000012ab010 *** ... 之前检查p,以避免此类错误。

1 个答案:

答案 0 :(得分:9)

这里是您的检查方式:您之前有没有释放它?如果是这样,它已被释放。如果没有,那么

C不会为您跟踪此操作,因此,如果您无法确定自己是否已释放关联的内存,则可能想NULL free的所有指针。

C只会做最少的事情,除非您明确指出要它做更多的事情:

free(p);
p = NULL;

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