cyt
導(dǎo)航
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
統(tǒng)計(jì)
隨筆 - 36
文章 - 0
評(píng)論 - 87
引用 - 0
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
Work(20)
(rss)
隨筆檔案
2008年1月 (1)
2007年9月 (1)
2007年3月 (3)
2006年11月 (2)
2006年4月 (2)
2006年3月 (2)
2006年1月 (3)
2005年11月 (2)
2005年10月 (20)
文章分類(lèi)
C/C++
(rss)
Libraries
(rss)
好友Blog
hongrui
Rayman
(rss)
Turing
廢人廢語(yǔ)
(rss)
搜索
最新評(píng)論
1.?re: OCI訪問(wèn)Oracle的一些刁鉆問(wèn)題[未登錄](méi)
這個(gè)有沒(méi)有具體的代碼?目前正好遇上這個(gè)問(wèn)題了
--paul
2.?re: 使用std::vector的一個(gè)誤區(qū)
很同意的你看法
--lancen
3.?re: 新版本的Qu
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--home page
4.?re: 新版本的Qu
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--Web site
5.?re: 新版本的Qu
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--this link
閱讀排行榜
1.?使用std::vector的一個(gè)誤區(qū)(7948)
2.?epoll的安裝和調(diào)試(5844)
3.?我自己的signal / slot實(shí)現(xiàn)(5406)
4.?如何在windows service里面控制console程序退出(4590)
5.?OCI訪問(wèn)Oracle的一些刁鉆問(wèn)題(4513)
評(píng)論排行榜
1.?新版本的Qu(19)
2.?使用std::vector的一個(gè)誤區(qū)(8)
3.?C++博客的精華區(qū)分類(lèi)構(gòu)想(意見(jiàn)收集)(8)
4.?drupal安裝心得(7)
5.?補(bǔ)充 BVRDE 使用的一些注意問(wèn)題(6)
使用std::vector的一個(gè)誤區(qū)
借助valgrind,終于找到一個(gè)隱藏很久的bug:
class
?A
{
????
}
;
std::vector
<
A
>
??vecArray;
vecArray.push_back(?
?);
vecArray.push_back(?
?);
vecArray.push_back(?
?);
A?
&
?a
=
?vecArray.back();
vecArray.push_back(?
?);
以上的代碼驟眼看上去也沒(méi)有什么奇怪的地方,經(jīng)過(guò)多次的測(cè)試也沒(méi)有發(fā)現(xiàn)什么問(wèn)題。但昨天bug終于爆發(fā)了,程序總是無(wú)緣無(wú)故down掉。
其實(shí)原因很簡(jiǎn)單,就是在 A & a = vecArray.back(); 這一步。
vector是一個(gè)會(huì)自增長(zhǎng)的容器,自增長(zhǎng)的結(jié)果就是把原來(lái)的內(nèi)存釋放掉,重新分配一個(gè)足夠大的內(nèi)存。既然原來(lái)的內(nèi)存已經(jīng)釋放掉,那么a所引用的內(nèi)存就是一段無(wú)效的內(nèi)存。對(duì)無(wú)效內(nèi)存的訪問(wèn),后果有多嚴(yán)重就不用多說(shuō)了。
想解決方法也很多,最簡(jiǎn)單就是用std::list或者std::deque替代vector。
posted on 2005-11-09 15:22
cyt
閱讀(7948)
評(píng)論(8)
編輯
收藏
引用
所屬分類(lèi):
Work
Comments
#
re: 使用std::vector的一個(gè)誤區(qū)
glacjay
Posted @ 2005-11-09 22:06
不可以保存索引嗎?必須要用指針嗎?為了效率?
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)
cyt
Posted @ 2005-11-10 09:23
用索引是可以,不過(guò)個(gè)人不大喜歡用索引。其原因就是索引并不是stl容器所共有的特性,一旦使用了索引,以后如果需要轉(zhuǎn)換為其他容器的時(shí)候,未免需要改動(dòng)不少地方。另外,我這里所說(shuō)的只是一種解決方法。對(duì)于我這種情況,只需要更改一個(gè)typedef定義就可以解決問(wèn)題。如果改成是用索引的話,需要更改不少地方,而且很容易會(huì)漏了。
程序本身算法也比較復(fù)雜,相對(duì)來(lái)說(shuō)使用索引性能也不會(huì)下降多少,這個(gè)倒不是什么需要考慮的地方了。
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)
nilaozi
Posted @ 2005-11-11 22:23
最后一次評(píng)論。也夠出氣了!
一個(gè)在blogjava失去家園的人聲討。
除了政治原因可以刪了一個(gè)人blog,別的理由都不能成為理由。
我為每個(gè)都到他們所需的ebook難道錯(cuò)了,
貼到首頁(yè),我還以你們有預(yù)申機(jī)制,CSDN是這樣,管理員認(rèn)為可以才放到首頁(yè)。
不信你到他們的首頁(yè)看看。
http://csdn.blog.net/ahhoo
如果你認(rèn)為還不錯(cuò)的,請(qǐng)到回貼。
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)
blues
Posted @ 2006-09-04 14:05
vector和deque的差別是操作上的,list雖然是基于鏈表的,但是不能隨機(jī)訪問(wèn),任何的容器都不是完美的,而且使用指針必然要判斷,但也算是個(gè)bug,
我想解決的話類(lèi)型用boost的any應(yīng)該可以了,它本身帶有安全檢查,我沒(méi)試僅是建議
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)
stl
Posted @ 2008-10-06 01:03
STL里的容器大部分都是“值”容器,你用“引用”去訪問(wèn)容器里的內(nèi)容,錯(cuò)了正常。這不是vector的問(wèn)題,你自己使用的問(wèn)題。如果基于性能考慮上面的程序一定要使用“引用”語(yǔ)意的話,應(yīng)該用vector<A*>的寫(xiě)法才比較正確。
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)
過(guò)客
Posted @ 2008-11-04 08:42
樓上的同志說(shuō)的好,STL的容器最好使用指針,
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)[未登錄](méi)
毛毛蟲(chóng)
Posted @ 2011-08-20 21:40
我也覺(jué)得應(yīng)該vector<A*>比較好。
回復(fù)
更多評(píng)論
#
re: 使用std::vector的一個(gè)誤區(qū)
lancen
Posted @ 2014-04-05 16:07
很同意的你看法
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
如何在windows service里面控制console程序退出
補(bǔ)充一個(gè)OCI的問(wèn)題
OpenDBX 一個(gè)訪問(wèn)多數(shù)據(jù)庫(kù)的C類(lèi)庫(kù)
移植代碼到64bits碰上的問(wèn)題
db4o and GigaBase
實(shí)在慚愧
新版本的Qu
OCI訪問(wèn)Oracle的一些刁鉆問(wèn)題
Linux的系統(tǒng)性能監(jiān)測(cè)參數(shù)獲取
簡(jiǎn)單的類(lèi)型安全format輸出后記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © cyt
久久国产精品无
|
亚洲天堂久久久
|
97久久精品国产精品青草
|
久久91精品国产91久久小草
|
国产ww久久久久久久久久
|
久久久久亚洲AV成人网
|
亚洲va中文字幕无码久久
|
久久亚洲国产中v天仙www
|
久久久这里有精品
|
AAA级久久久精品无码片
|
欧美日韩精品久久久久
|
午夜精品久久久久久毛片
|
国产精品xxxx国产喷水亚洲国产精品无码久久一区
|
欧美日韩成人精品久久久免费看
|
人妻无码精品久久亚瑟影视
|
久久亚洲国产午夜精品理论片
|
久久精品国产男包
|
久久国产香蕉视频
|
老司机国内精品久久久久
|
亚洲精品午夜国产VA久久成人
|
日本免费一区二区久久人人澡
|
久久精品国产精品亚洲精品
|
国产精品久久午夜夜伦鲁鲁
|
久久久免费观成人影院
|
久久精品免费观看
|
麻豆成人久久精品二区三区免费
|
久久强奷乱码老熟女
|
久久国产一区二区
|
色综合久久综合中文综合网
|
中文成人久久久久影院免费观看
|
亚洲AV无码久久精品成人
|
性做久久久久久久久老女人
|
精品久久综合1区2区3区激情
|
av无码久久久久不卡免费网站
|
久久精品这里只有精99品
|
久久中文字幕一区二区
|
97久久精品无码一区二区天美
|
少妇精品久久久一区二区三区
|
亚洲伊人久久精品影院
|
精品国产乱码久久久久软件
|
久久久久国产精品嫩草影院
|