linux c ++中的内存释放?

Mr.*_*ool 0 c++ linux memory malloc free

在我的应用程序中,我unsigned char*使用了为我的variable()分配内存malloc(),当尝试在析构函数中释放该内存时,我使用此条件来避免双重损坏.

unsigned char *wsqData;
wsqData= (unsigned  char *)malloc( 10000*sizeof( unsigned char));
Run Code Online (Sandbox Code Playgroud)

在我的析构函数中

  if(wsqData!=NULL)
  {
      free(wsqData);
      wsqData=NULL;
  } 
Run Code Online (Sandbox Code Playgroud)

现在问题是当我在析构函数之前释放内存时,这个"如果条件"无法正常工作,它再次尝试释放该变量,它会导致双重损坏错误.这种情况有什么问题?

Luc*_*ore 5

调用free内存不会自动设置指针NULL,因此您的条件毫无意义.你需要设置wsqDataNULL你释放它的任何地方.

当然,条件无论如何都是毫无意义的,因为NULL保证指针上的自由是安全的.