社区
C++ Builder
帖子详情
new和delete 的问题
amfer
2003-08-29 12:17:27
像TList,TStringList,TBookMark这样的不可件的东西,new了之后要不要delete?
如果把所有要delete 的东西放在__finally中,是否保证一定能够被delete
new的时候:比如new TForm(this),中的this,Application和NULL到底有什么区别?
...全文
19
7
打赏
收藏
new和delete 的问题
像TList,TStringList,TBookMark这样的不可件的东西,new了之后要不要delete? 如果把所有要delete 的东西放在__finally中,是否保证一定能够被delete new的时候:比如new TForm(this),中的this,Application和NULL到底有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wjlsmail
2003-08-29
打赏
举报
回复
可以
TComponent *Component = new TComponent(Classes::TComponent* AOwner[, int Dummy]) ;
// 对象的 Owner 负责对象的构造和拆构(当 Owner 对象释放时释放基于它的控件)
this ---- TForm1 ; // 和 Delphi 中的 Self 同义
Application ---- TApplication //
NULL ---- 有对象自己负责拆构
Tiejun_Chenfang
2003-08-29
打赏
举报
回复
你new的原则上你要delete,但个别的如form等,可又owner负责删除
TForm(this)中的参数,就是谁是form的owner
this 执行这句话的对象的指针,一般是主form(或另外一个form) ,那么,如果你不delete 该form的话,当主form(或另外一个form)消亡时,主form(或另外一个form)会帮你delete 该form
Application 应用程序对象,如果你不delete 该form的话,当应用程序消亡时,应用程序会帮你delete 该form
NULL 没有owner,只好你自己delete了
当new TForm(this)在应用程序对象对象范围内时,this指的是Application,两者没区别了
amfer
2003-08-29
打赏
举报
回复
如果某个组件没有Owner,那么如果不手动delete,这个组件在内存中将一直存在,是吗?
amfer
2003-08-29
打赏
举报
回复
这么说在new xxx(...)括号中的this,Application就是这个组件的Owner喽,有没有可能某个组件没有Owner?
Wingsun
2003-08-29
打赏
举报
回复
原则上都应该调用正确的delete来释放内存。
VCL的东西原则上可以由它的Owner来负责他的生命周期,建议不要那样做。
winespirit
2003-08-29
打赏
举报
回复
最好自己Delete,还有,要显式释放List里面的指针
nuaacims
2003-08-29
打赏
举报
回复
不是因为TListTStringList不可见,所以可以new了不delete,而是它建立之后,虽然你没有手动delete,但是都会由它们的Owner负责析构...
C++第3课:C++内存泄露检测原理及案例实战
C++第3课:C++内存泄露检测原理及案例实战本课程侧重于C++的内存管理及泄露检测。我将带领大家学习OS的内存管理机制、C++的堆和栈、内存泄露及检测等。本课程具体的内容主要包括C++内存泄露案例、VS2015内存泄露检测、野指针、VirtualAlloc/HeapAlloc/malloc/
new
的区别、C++堆和栈的内存管理、栈简介、堆简介、堆与栈区别、栈的内存分配、Windows的虚拟内存技术、Windows的内存映射文件技术、Linux的虚拟内存技术、Linux的Valgrind内存泄露检测、Windows的VLD内存泄露检测、C++内存泄露检测方式之对象计数、C++内存泄露检测方式之重载
new
和
delete
、C++内存泄露检测方式之智能指针等。
C++里 数组
new
和
delete
问题
//C++里 数组
new
和
delete
问题
//对于数组
new
的不同方式 和不同的释放方法 //---------------------------------------------------------------- // 创建字符指针数组 char **parr =
new
char*[100]; //注意这里是**parr // 释放各个字符数组 for (int i =0; i < 100; i++)
delete
[]
C++
new
和
delete
的使用
new
和
delete
是C++里非常重要的两个关键字,意味着从“自由存储(堆)”分配指定大小的内存和释放掉这些内存。这些用法哪怕初学者也会,但是今天要讲的不是这个。今天要讲的是使用中容易忽视的细节和可能引发的错误首先,
new
和
delete
总是成对出现,顺序也不能错。一定是先
new
再
delete
。其次,
new
和
delete
是针对单个对象,还有
new
[]和
delete
[]针对数组。最后,我们先从最简单的使用开始,慢慢带入。
new
和
delete
还可以操作自定义对象。struct t {
new
/
delete
详解(跑路人笔记)<C++初阶>
文章目录前言
new
/
delete
内置类型举例自定义类型举例
new
失败operator
new
与operator
delete
现式调用构造函数
new
和
delete
的实现原理malloc/free和
new
/
delete
的区别小结 前言
new
和
delete
是C++为了类的使用方便而创造的操作符,我们在使用C++时应该尽量避免使用malloc和free而应该转向使用
new
和
delete
.
new
/
delete
内置类型举例
new
/
delete
类似于malloc/free但是为了搭配我们的C++的新知识也就是类的
浅谈 C++ 中的
new
/
delete
和
new
[]/
delete
[]
在 C++ 中,你也许经常使用
new
和
delete
来动态申请和释放内存,但你可曾想过以下
问题
呢?
new
和
delete
是函数吗?
new
[] 和
delete
[] 又是什么?什么时候用它们?你知道 operator
new
和 operator
delete
吗?为什么
new
[] 出来的数组有时可以用
delete
释放有时又不行?… 如果你对这些
问题
都有疑问的话,
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章