new vecotr< string > 不需要 delete么?

lnxydl 2005-12-19 05:05:29
今天看 c++ primer 3nd 第六章有一段代码:vector<string> *words = new vector<string>;
但是程序中么有delete. 是不是vector内部负责delete? effective c++尚不是说最好 new 同 delete 要对应么?
...全文
370 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhbttfile 2005-12-20
  • 打赏
  • 举报
回复
new delete成双成对

_________________

呵呵,使用auto_ptr除外。auto_ptr的析构函数中已经包括了一个delete。
lnxydl 2005-12-20
  • 打赏
  • 举报
回复
好了,结贴,谢谢大家帮忙
csucdl 2005-12-19
  • 打赏
  • 举报
回复
new delete成双成对
winks 2005-12-19
  • 打赏
  • 举报
回复
要的,new就进入堆空间了,它不会自动释放掉的
pyrophile 2005-12-19
  • 打赏
  • 举报
回复
是的,我现在正在看第十七章,不过前面有些章节跳过去了,感觉用不到。
我把那个分词程序改称中文单个文本检索程序了,是在分词的基础上
rwxybh 2005-12-19
  • 打赏
  • 举报
回复
new和delete一起用,呵呵,也有例外
不信看看MFC中CWinApp的Initialize中new的CFrameWnd的子类,你的程序中不需要delete,因为框架帮你delete了
CframeWnd::~CFrameWnd() {delete this;}
fanghuoqiang 2005-12-19
  • 打赏
  • 举报
回复
to : zhousqy(标准C匪徒)(忘不了)

个人理解你的这个说法不完全正确的:

一个在函数中声明的一个局部变量,在退出这个函数时会自动调用自己的析构函数的(如果有的话)。
lz 说的 word 是自己new 出来的,应该调用 delete 没错。调用 delete 则立刻就可以执行其析构函数了,并且释放由new 申请而来的内存资源。但是在这里执行析构函数与是否内存泄露没有必然关系,内存泄露是由于 new 引起的,不关 vector<>* 析构函数的事情。
bm1408 2005-12-19
  • 打赏
  • 举报
回复
绝对是要用的,
sinall 2005-12-19
  • 打赏
  • 举报
回复
要!
vikingemail 2005-12-19
  • 打赏
  • 举报
回复
楼上说的很对,自己惹得祸,自己来解决,否则就要出大事情:)
sankt 2005-12-19
  • 打赏
  • 举报
回复
一个原则:
自己申请,自己释放
lnxydl 2005-12-19
  • 打赏
  • 举报
回复
回 pyrophile(写代码就像打太极):就是那个分词程序。
找到了,在第17章有函数进行析构。

这种写法真是不太好啊,不看到17章真的不知道咋回事。
zhousqy 2005-12-19
  • 打赏
  • 举报
回复
回复人: goodboy1881(积木) ( ) 信誉:110 2005-12-19 17:13:00 得分: 0


匪徒啊,人家说的是那个
vector<string> *words = new vector<string>;
为什么没有
delete.....
没有delete words 。
那vector怎么能调用到析构函数呢,嘿嘿。
-----------------------------
瓦,偶潜了。。。
pyrophile 2005-12-19
  • 打赏
  • 举报
回复
你说的是哪个分词程序吧,那里面为什么没有delete,因为后面的函数还要用到它,所以不能delete。那个程序中的函数是连在一起的。

不知道搂主能不能理解?
还有new和delete最好是对应的,要不然在程序中有可能你会new不到空间的(资源耗尽)。
ddnlkd1204 2005-12-19
  • 打赏
  • 举报
回复
new和delete应该要对应的,这种情况应该要delete的,恩~
积木 2005-12-19
  • 打赏
  • 举报
回复
匪徒啊,人家说的是那个
vector<string> *words = new vector<string>;
为什么没有
delete.....
没有delete words 。
那vector怎么能调用到析构函数呢,嘿嘿。
zhousqy 2005-12-19
  • 打赏
  • 举报
回复
vector和string都有自己的析构函数,那里面有delete。
all4u 2005-12-19
  • 打赏
  • 举报
回复
应该要吧。
呵呵,楼主看书太仔细了,佩服ing....

64,637

社区成员

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

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