gpt4 book ai didi

c++ - linux c++ 中的内存释放?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:30 25 4
gpt4 key购买 nike

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

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 保证是安全的。

关于c++ - linux c++ 中的内存释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com