社区
C++ 语言
帖子详情
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 要对应么?
...全文
380
18
打赏
收藏
new vecotr< string > 不需要 delete么?
今天看 c++ primer 3nd 第六章有一段代码:vector *words = new vector; 但是程序中么有delete. 是不是vector内部负责delete? effective c++尚不是说最好 new 同 delete 要对应么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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....
C++-----vector
C++vector详解,模拟实现,迭代器失效,以及一些奇葩问题
<C++>vector及其模拟实现
注意 : 将数据拷贝到新空间,仍然不能用memcpy函数,因为对于
需要
深拷贝的自定义类型,使用memcpy函数以后,新开辟空间里的元素和原空间里的元素所指向的内存空间是一样的,当旧空间被释放时,会调用自定义类型的析构函数,从而使得新开辟空间里的元素指向的内存空间也被释放掉了。注意: memcpy拷贝的元素为
string
对象,是自定义类型,拷贝时为浅拷贝,其中两块空间的
string
数据的_str会指向同一串字符串,在析构时,vector的每个元素析构两次,那么同一块空间会被释放两次,程序会崩。
<C++> STL_vector
STL_vector容器的使用和模拟实现
STL.vector
容器删除单个元素、部分元素、全部元素
当容器中的元素为指针时,我们删除容器中元素的时候,也要注意使用
delete
ptr;删除堆堆对象实例,以免造成内存泄露的问题。下面我以vector容器为例,也适用于其它容器(deque、map、set)。#include<iostream> #include<iomanip> #include<vector> #include<
string
> usi...
C++学习笔记(12)
介绍了十一种常用的STL组件(1.array 2.vector 3.list 4.stack 5.queue 6.deque 7.priority_queue 8.set/multiset/bitset 9.map/multimap 10.initializer_list 11.tuple),以及迭代器的知识。
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章