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

unsigned char *wsqData;
wsqData= (unsigned  char *)malloc( 10000*sizeof( unsigned char));

在我的毁灭者
  if(wsqData!=NULL)
  {
      free(wsqData);
      wsqData=NULL;
  }

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

最佳答案

在内存中调用free不会自动将指针设置为NULL,因此条件是无意义的。无论您在何处释放它,都需要将wsqData设置为NULL
当然,无论如何,这个条件都是没有意义的,因为对NULL指针调用free是安全的。

09-08 09:02