C:如何检查free()是否释放了内存?

时间:2011-10-14 23:20:38

标签: c++ c malloc free

  

可能重复:
  Function Free() in C doesn't work

我刚问了一个关于free()的问题,请查看下面的链接。如果我不能使用if(指针!= NULL),那么我可以使用什么,以防因为我犯了一个愚蠢的错误而无法正常工作。

Function free() in C isn't working for me

2 个答案:

答案 0 :(得分:3)

每当你释放指针时,你应该将它设置为null - 然后你可以安全地使用你的测试

free(pointer);
pointer=NULL;

if(!pointer)
{
    pointer=malloc(42);
}

你甚至可以创建自己的免费功能,所以你不要忘记设置为null。

void myfree(void **ptr)
{
    free(*ptr);
    *ptr=NULL;
}

答案 1 :(得分:0)

不要使用裸指针。

使用std::shared_ptr<OBJ>std::unique_ptr<OBJ>