社区
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 要对应么?
...全文
392
18
打赏
收藏
new vecotr< string > 不需要 delete么?
今天看 c++ primer 3nd 第六章有一段代码:vector *words = new vector; 但是程序中么有delete. 是不是vector内部负责delete? effective c++尚不是说最好 new 同 delete 要对应么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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(2)之vector的模拟实现
本文展示了自定义 vector 类的核心实现,包含: 内存管理:通过 _start、_finish、_endofstorage 三个指针标记数据范围与容量边界,析构时自动释放内存; 迭代器支持:定义 iterator 和 const_iterator 类型,提供 begin()/end() 接口; 关键功能:实现 size()、capacity()、empty() 等基础查询,以及 reserve() 内存扩容(使用深拷贝避免浅拷贝问题); 构造扩展:支持初始化列表和迭代器范围构造。
c++中vector的用法详解
c++中vector的用法详解 2011年12月01日 21:25:06 阅读数:414421 标签: vectorc++
string
insert测试数据结构更多 个人分类: c语言 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己
需要
的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: ...
<C++>vector及其模拟实现
注意 : 将数据拷贝到新空间,仍然不能用memcpy函数,因为对于
需要
深拷贝的自定义类型,使用memcpy函数以后,新开辟空间里的元素和原空间里的元素所指向的内存空间是一样的,当旧空间被释放时,会调用自定义类型的析构函数,从而使得新开辟空间里的元素指向的内存空间也被释放掉了。注意: memcpy拷贝的元素为
string
对象,是自定义类型,拷贝时为浅拷贝,其中两块空间的
string
数据的_str会指向同一串字符串,在析构时,vector的每个元素析构两次,那么同一块空间会被释放两次,程序会崩。
<C++> STL_vector
STL_vector容器的使用和模拟实现
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章