社区
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 要对应么?
...全文
376
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
这里就会把T推演为
string
,然后初始化,出了作用域还要调用析构函数 这里本质就是为了提高效率,其实使用
new
和
delete
就可以了 看了这么多,下面我们开始模拟实现 namespace bai { template class vector { public: ...
<C++>vector及其模拟实现
注意 : 将数据拷贝到新空间,仍然不能用memcpy函数,因为对于
需要
深拷贝的自定义类型,使用memcpy函数以后,新开辟空间里的元素和原空间里的元素所指向的内存空间是一样的,当旧空间被释放时,会调用自定义类型的析...
<C++> STL_vector
//这也可以 ,构造开空间,不推荐,有些情况不适用 cout << "v contains:"; for (size_t i = 0; i < v.size(); i++) { cout << ' ' << v[i];// 0 1 2 3 4 100 100 100 0 0 0 0 } cout << endl; v.resize(8); //修改...
STL.vector
容器删除单个元素、部分元素、全部元素
当容器中的元素为指针时,我们删除容器中元素的时候,也要注意使用
delete
ptr;删除堆堆对象实例,以免造成内存泄露的问题。下面我以vector容器为例,也适用于其它容器(deque、map、set)。#include<iostream...
C++学习笔记(12)
//不
需要
起始长度--->构建的是对象,会自动释放 vecData.assign(array, array + 3); /*赋值的方式,把数组中的东西赋值给另一个数组(把元素的 第一个位置到最后一个位置拷贝到容器中)*/ printVector(vecData); return...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章