社区
C++ 语言
帖子详情
关于内存释放的问题!
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需不需要释放?
...全文
144
10
打赏
收藏
关于内存释放的问题!
如: typedef struct s { char *c; }*S; S p = new s; p.c = new char[100]; delete p; 请教大家此时释放p,会不会造成c的内存泄露?c需不需要释放?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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[]是配对的。
你的问题就解决了。
C++ 语言
65,208
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章