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)
现在问题是当我在析构函数之前释放内存时,这个"如果条件"无法正常工作,它再次尝试释放该变量,它会导致双重损坏错误.这种情况有什么问题?
调用free内存不会自动设置指针NULL,因此您的条件毫无意义.你需要设置wsqData到NULL你释放它的任何地方.
当然,条件无论如何都是毫无意义的,因为NULL保证指针上的自由是安全的.