
类的静态成员变量的删除空间释放
有类如下,classcName{public:...data......fun....public:cName*m_pName;voidGetInstance(){if(...
有类如下,class cName{
public:
...data...
...fun....
public:
cName* m_pName;
void GetInstance() { if ( m_pName == NULL ) m_pName = new cName};} ;
void ReleaseInstance() {safe_delete(m_pName)}; /*这个是我采用的删除机制*/
}
cName::m_pName = NULL:
伪代码如上,类中有vector类型的属性。程序运行于linux平台,我使用GetInstance<-->ReleaseInstane()的结构进行释放的时候,服务端崩溃,根据core文件可见崩溃点在ReleaseInstance;
请问对于类的静态成员的释放这样做有问题么?如果有.请问该如何释放
补充说明下,刚刚打得急没注意有两个错误,1.m_pName的声明为 static cName* m_pName; safe_delete 为一个宏定义,展开为 if (NULL != m_pName) delete m_pName; m_pName == NULL;感谢一二楼的回答,两位的回答与我核心问题毫无关联。不过谢谢! 展开
public:
...data...
...fun....
public:
cName* m_pName;
void GetInstance() { if ( m_pName == NULL ) m_pName = new cName};} ;
void ReleaseInstance() {safe_delete(m_pName)}; /*这个是我采用的删除机制*/
}
cName::m_pName = NULL:
伪代码如上,类中有vector类型的属性。程序运行于linux平台,我使用GetInstance<-->ReleaseInstane()的结构进行释放的时候,服务端崩溃,根据core文件可见崩溃点在ReleaseInstance;
请问对于类的静态成员的释放这样做有问题么?如果有.请问该如何释放
补充说明下,刚刚打得急没注意有两个错误,1.m_pName的声明为 static cName* m_pName; safe_delete 为一个宏定义,展开为 if (NULL != m_pName) delete m_pName; m_pName == NULL;感谢一二楼的回答,两位的回答与我核心问题毫无关联。不过谢谢! 展开
3个回答
展开全部
可改为如下试试:
if(NULL!=m_pName)
safe_delete(m_pName);
我百度了一下,safe_delete定义如下
#define safe_delete(p) do{ delete p; p=NULL; } while(false)
如果真如楼主所说定义为
safe_delete 为一个宏定义,展开为 if (NULL != m_pName) delete m_pName; m_pName == NULL;
是不太可能出现程序崩溃的。运行以下程序未见异常:
#include <iostream>
using namespace std;
#define safe_delete(p) {if (NULL != m_pName) delete m_pName; m_pName = NULL;}
class cName{
public:
public:
static cName* m_pName;
static cName* GetInstance() { if ( m_pName == NULL ) m_pName = new cName; return m_pName;}
void ReleaseInstance() {safe_delete(m_pName);};/*这个是我采用的删除机制*/
};
cName* cName::m_pName = NULL;
int main(){
cName::GetInstance()->ReleaseInstance();
cName::GetInstance()->ReleaseInstance();
return 0;
}

2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询