社区
C++ 语言
帖子详情
关于new和delete的疑问
lugaideath1
2009-03-17 10:41:13
我昨天在书上看到,说new和delete一般都是成对出现的!
但我想问的是,我new一个窗体的对象,然后窗体关闭的时候,它的析构函数不是已经把它占的内存释放了吗?为什么还要delete呢?
...全文
120
12
打赏
收藏
关于new和delete的疑问
我昨天在书上看到,说new和delete一般都是成对出现的! 但我想问的是,我new一个窗体的对象,然后窗体关闭的时候,它的析构函数不是已经把它占的内存释放了吗?为什么还要delete呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
VCRWX
2009-03-17
打赏
举报
回复
5楼说的非常对
ctan
2009-03-17
打赏
举报
回复
[Quote=引用楼主 lugaideath1 的帖子:]
我昨天在书上看到,说new和delete一般都是成对出现的!
但我想问的是,我new一个窗体的对象,然后窗体关闭的时候,它的析构函数不是已经把它占的内存释放了吗?为什么还要delete呢?
[/Quote]
有析构函数, 并不代表它就会执行,
你不释放窗体, 窗体的析构函数会执行吗?
另外, 窗体关闭并不表示释放窗体对象,
释放窗体一般有两种情况, 一是显示释放, 即用delete释放,
还有一种就是作为局部变量, 随函数的结束自动释放
yshuise
2009-03-17
打赏
举报
回复
[Quote=引用 4 楼 lqandlq 的回复:]
new了以后必须delete,这是潜规则!!
[/Quote]
晕,这是明确的规则,不是“潜规则”。
passionboy03
2009-03-17
打赏
举报
回复
up
[Quote=引用 5 楼 wohow 的回复:]
窗体的析构函数释放窗体内部分配的资源和内存(this->any),但是不能释放窗体本身被分配的内存(this)。
delete先调用析构函数(释放窗体内部分配的资源和内存),然后释放窗体分配的内存
[/Quote]
wohow
2009-03-17
打赏
举报
回复
窗体的析构函数释放窗体内部分配的资源和内存(this->any),但是不能释放窗体本身被分配的内存(this)。
delete先调用析构函数(释放窗体内部分配的资源和内存),然后释放窗体分配的内存
lqandlq
2009-03-17
打赏
举报
回复
new了以后必须delete,这是潜规则!!
chin_chen
2009-03-17
打赏
举报
回复
[Quote=引用楼主 lugaideath1 的帖子:]
我昨天在书上看到,说new和delete一般都是成对出现的!
但我想问的是,我new一个窗体的对象,然后窗体关闭的时候,它的析构函数不是已经把它占的内存释放了吗?为什么还要delete呢?
[/Quote]
析构函数在域结束后调用的,你new出来的那个域不会自动结束的,在堆里面。
你要自己调用它析构函数,delete就是有这个功能的。
“然后窗体关闭的”,--------但它仍占有内存资源。
chin_chen
2009-03-17
打赏
举报
回复
但是你析构函数什么时候调用了???
不就是在delete时候调用的。
topwork
2009-03-17
打赏
举报
回复
你说的是C++还是C#。
C++只要你new了,一般情况下都要delete。你说的情况也需要。
lugaideath1
2009-03-17
打赏
举报
回复
那么如果我在我的窗体里面new一个dialog,那么我delete应该写到哪里保证当我关闭这个dialog的时候同时释放这个dialog的内存呢?怎样可以做到及时回收呢?
jakqigle
2009-03-17
打赏
举报
回复
c++不想JAVA有自动回收机制,需要我们做内存的回收处理的。如果new后自己不delete的话,内存可能会溢出。
liuysheng
2009-03-17
打赏
举报
回复
[Quote=引用楼主 lugaideath1 的帖子:]
我昨天在书上看到,说new和delete一般都是成对出现的!
但我想问的是,我new一个窗体的对象,然后窗体关闭的时候,它的析构函数不是已经把它占的内存释放了吗?为什么还要delete呢?
[/Quote]
析构函数不会释放new出来的空间的...也就是说自己在栈上分配的空间,都得自己去处理,否则会出现问题.....
C++_
new
和
delete
(有
疑问
)
new
一个类
new
一个char*
浅谈 C++ 中的
new
/
delete
和
new
[]/
delete
[]
在 C++ 中,你也许经常使用
new
和
delete
来动态申请和释放内存,但你可曾想过以下问题呢?
new
和
delete
是函数吗?
new
[] 和
delete
[] 又是什么?什么时候用它们?你知道 operator
new
和 operator
delete
吗?为什么
new
[] 出来的数组有时可以用
delete
释放有时又不行?… 如果你对这些问题都有
疑问
的话,
new
和
delete
用法详解
本篇文章对C++中的
new
和
delete
进行详解。在讲解
new
和
delete
时,我们会对比C语言中的malloc和free,看看两者的区别和相似之点。希望本篇文章会对你有所帮助
new
和
delete
的底层实现原理
-
new
/
new
[]和
delete
/
delete
[]是什么?
new
/
new
[]和
delete
/
delete
[]是操作符;是C++用来实现动态内存管理的操作符;
new
/
new
[] 操作符是用来申请空间的;
delete
/
delete
[]操作数是用来释放动态申请出来的空间; -
new
/
delete
的实现原理
new
和
delete
是用户进行动态内存申请和释放的操作符,operator
new
...
深入理解
new
[]和
delete
[]
c++的动态内存管理方式和c语言不一样,在c++中使用
new
和
delete
来替换c语言中的malloc和free。这里有几个点不一样, 1、
new
和
delete
是操作符,malloc和free是函数(我的理解是c++将
new
和
delete
约定为操作符而已,
new
和
delete
操作符重载函数本质上还是函数) 2、c++有了类的概念,类对象的初始化除了要分配内存,还需要对内存进行初始化!所以,c++必须引入一种新的内存分配方式,既可以像malloc一样开...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章