new与delete 的使用原理?

lxg_123 2001-07-26 08:37:33
那位高手能够讲一讲new 和delete 的原理?
窗体、变量(可能还有别的对象,我不太清楚)在new 出来后,
在什么时候delete ,如果不delete,后果是什么?
...全文
292 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wingsun 2001-07-26
  • 打赏
  • 举报
回复
对,new会调用类的构造函数,new通过类的构造函数来初始化实例
delete调用类的析构函数,delete通过析构函数来完成释放的工作。
kimryo 2001-07-26
  • 打赏
  • 举报
回复
小的空间。
kimryo 2001-07-26
  • 打赏
  • 举报
回复
一般动态分配写的空间不建议使用new,使用malloc较好,因为new后,系统会自动分配一个控制这片内存的struct.这在以前的贴子中说的很清楚,搜索一下。
kimryo 2001-07-26
  • 打赏
  • 举报
回复
如果new的是一个Class的话,要调用Constructor,当用完后就delete(这看你的需要,delete会掉用析构函数),而且必须delete,否则会有Memory Leak(内存泄漏),用VC的编译器可以看见.
bluebutterfly 2001-07-26
  • 打赏
  • 举报
回复
哈哈,感谢BCB(:)),我试试, 
BCB 2001-07-26
  • 打赏
  • 举报
回复
这些新建的一批button,在同一起始位置出现,设一下它的->Left,->Top就分开了;
新建的一批对象指针要分开保存,比如到数组中
否则 delete 只能删最后一个,其它就没法删了,
因为指针只能指向最后一个,删两次当然要出错了
抬头看路 2001-07-26
  • 打赏
  • 举报
回复
用一个队列或者堆栈保存你这一堆Button,然后从队列或者堆栈中弹出来删掉。
bluebutterfly 2001-07-26
  • 打赏
  • 举报
回复
对不起,我可能没讲清楚,我是在一个buttonA的click事件中 :new 一个对象如TButton * child;然后呢,再另一个buttonB的 click事件中写了delete,然后运行后,我按一下A可以出现一个新的button,按一下B则这个新button消失,然后,如果我连续按几下A,问题一:不知道如何实现排列这几个新建的button,二:就是按了几下A后,应当是出现好几个button才对,然后再按B时就程序就出现问题了,请各位高手指点迷津,一会我给分
BCB 2001-07-26
  • 打赏
  • 举报
回复
new两个对象干什么,
char *p;
p=new char[100]; // 第一次
p=new char[200]; // 错:第二次new后,将第一次的指针值丢失了
bluebutterfly 2001-07-26
  • 打赏
  • 举报
回复
to dalinsky:
你上面讲得很对,可是
我想问一下,我在程序里用了new和delete是配对了,操作一次是对的,就是new一个对象,然后再delete一个对象,可是一旦我按new两个对象然后再delete后就运行错误,我想知道应当如何在程序里写,能实现随意new对象,然后,想让哪个对象delete它就消失,
dalinsky 2001-07-26
  • 打赏
  • 举报
回复
在C++里,只要你使用过new,就一定要一个delete与其相对应,否则,new申请的内存空间将不能被释放出来,但已经不能使用了,如果在一个循环里使用new而没有delete的话,则内存空间将很快被吃掉,轻则程序down掉,重则死机。小心使用!!!
Againstwind 2001-07-26
  • 打赏
  • 举报
回复
up
xycleo 2001-07-26
  • 打赏
  • 举报
回复
老大说的很对1!!!我也是把new和delete看成构造函数和析构函数,

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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