类中同一指针变量在不同的公有函数中动态申请不同的空间,在析构函数中(函数体有delete操作)可以一次性释放空间吗?会造成内存泄漏吗?

给你的爱在西元前 2019-09-10 10:15:55
举例说明:
class A:
{
private:
......
char *p;
public:
A( )
{
......
p=new char[5];
......
}
void set(char n[],char t[],int m);
~A() { delete []p;} ;
}
void A::set(char n[],char t[],int m)
{
......
p=new char[15];
......
}
...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 uouo88 的回复:
会造成内存泄漏的~ 你需要在set函数中首先delete掉p,然后再有这句p=new char[15];不然多次调用set后,之前的内存就无法释放了。 当然,建议用更好的做法,把char *p;定义为智能指针,例如share_ptr<char*> p;
感谢回复,有所了解了,而且了智能指针的概念
uouo88 2019-09-10
  • 打赏
  • 举报
回复
会造成内存泄漏的~ 你需要在set函数中首先delete掉p,然后再有这句p=new char[15];不然多次调用set后,之前的内存就无法释放了。
当然,建议用更好的做法,把char *p;定义为智能指针,例如share_ptr<char*> p;

64,637

社区成员

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

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