如何封装delete[] p; p = null;

CG_XinBing 2010-04-02 03:41:22
一般new动态分配内存之后,都要删除之,代码都一样;
delete[] p; p = null;
但总是这样写很麻烦,最好可以把这二句封装在一个函数中。但指针指向结构体千差万别,如何做啊?谢谢!
...全文
152 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenchangxiong 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 demon__hunter 的回复:]
C/C++ code

#define ARRAYDELETE(p) {delete[] (p); (p) = null;}
[/Quote]
俺就这么做的。还有有些要调用Release的com接口
ithiker 2010-04-02
  • 打赏
  • 举报
回复
学习了
herman~~ 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gzliaojian 的回复:]
#define SAFE_DELETE(p) { if(p) { delete p; p=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] p; p=NULL; } }
[/Quote]

UP
linsj585 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gzliaojian 的回复:]
#define SAFE_DELETE(p) { if(p) { delete p; p=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] p; p=NULL; } }
[/Quote]


+1
gzliaojian 2010-04-02
  • 打赏
  • 举报
回复
#define SAFE_DELETE(p) { if(p) { delete p; p=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] p; p=NULL; } }
linyongzuo 2010-04-02
  • 打赏
  • 举报
回复

void dele( int **p )
{
delete[] *p;
*p = NULL;
}
int main()
{
int *p = new int[3];
p[0]=1;
p[1]=2;
p[2]=3;
// ...
dele( &p );//封装
}

机智的呆呆 2010-04-02
  • 打赏
  • 举报
回复

#define ARRAYDELETE(p) {delete[] (p); (p) = null;}
pengzhixi 2010-04-02
  • 打赏
  • 举报
回复
那我觉得你还不如去用JAVA了
ahao 2010-04-02
  • 打赏
  • 举报
回复

template<typename T>
void safeDelete(T *& p_t)
{
delete p_t;
p_t = NULL;
}

「已注销」 2010-04-02
  • 打赏
  • 举报
回复
定义一个宏岂不更简单?

#define DelArray(x) delete [] x; x = NULL
zqlclj 2010-04-02
  • 打赏
  • 举报
回复
我觉得不要封装的好,如果是一个局部的指针就麻烦了。
hai040 2010-04-02
  • 打赏
  • 举报
回复
boost::smart_ptr?
selooloo 2010-04-02
  • 打赏
  • 举报
回复
LZ没听过析构函数么

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧