在我的应用程序中,我使用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是安全的。