关于内存释放的问题!

kim_jinye 2010-03-11 05:36:15
如:

typedef struct s
{
char *c;
}*S;

S p = new s;

p.c = new char[100];

delete p;

请教大家此时释放p,会不会造成c的内存泄露?c需不需要释放?
...全文
127 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
天亮后说晚安 2010-03-12
  • 打赏
  • 举报
回复
先内后外
kuillldan 2010-03-11
  • 打赏
  • 举报
回复
会,delete时你只释放了p所指对象占用的空间,该空间所占大小为sizeof(s), 而p所指对象里面指针c所指的空间并没有被释放。
chenweiye120 2010-03-11
  • 打赏
  • 举报
回复
路过学习啦~~
踏实技术人 2010-03-11
  • 打赏
  • 举报
回复
弱弱的问一句,S p = new s;

这句是什么意思啊!看不明白
damndarn 2010-03-11
  • 打赏
  • 举报
回复
要写个析构函数
typedef struct s
{
char *c;
~s()
{
if(c) delete[] c;
c=0;
}
}*S;
naziim 2010-03-11
  • 打赏
  • 举报
回复
对自己开辟的内存,在程序或者函数的结束的部分都是要释放。

顺序为:先内后外
Michael_Xie 2010-03-11
  • 打赏
  • 举报
回复
肯定内存泄漏啊
baihacker 2010-03-11
  • 打赏
  • 举报
回复
当然需要。
先内层delete再外层。
另外,你应该用->,而不是.
xingzhe2001 2010-03-11
  • 打赏
  • 举报
回复
当然会啊,你又没写析构s的函数
老邓 2010-03-11
  • 打赏
  • 举报
回复
当然需要了!
只要记住:new和delete是配对的。
new[]和delete[]是配对的。
你的问题就解决了。

64,639

社区成员

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

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