問題多多的STL實現 (轉)
問題多多的STL實現
開始學VC的時候還不知道STL為何物,只知道什麼CString之類的東西可以方便的出來字串,從此享受著C++帶來的好處。後來慢慢才看到STL的介紹,覺得真是個好東西,於是開始了STL的歷程,當然用的STL也是VC6的實現。開始看書作些小,小專案還覺得可以挺不錯的。
第一次發現VC的STL有問題是在作一個HTTP的時候,由於需要在跨平平臺上面實現核心,所以STL成了首選,真的沒想到它的iostream竟然是執行緒不的,我的控制檯輸出成了簡直就是亂七八糟。害的我同步互斥一大堆,這下可是真的夠參的啊。奇怪的是VC自己的iostream.h卻是執行緒安全的哦,只可惜iostream.h在功能上面何STL的有一點點不同,使用的話就要修改部分的程式碼,或者要使用什麼#ifdef 之類的東西。從那個時候開始就想著要找一個好一點的STL實現版本。聽說SGI的實現不錯,於是搞了一個試一試,還行,沒有發現什麼問題,於是便一直在用。然而,不幸的事情又發生了,又一次在作傳送的模組的時候VC的竟然發現有洩漏情況,按照我的看來,程式碼沒有洩漏的情況(我對記憶體的使用向來小心),而且從偵錯程式的資訊表明是有部分string出現了記憶體洩漏。於是,將SGI的include目錄從options中刪除調,重新編譯除錯,好啦!真是奇怪,難道真的是SGI的記憶體洩漏了嗎,我單獨使用的時候沒有問題的哦,到現在我還沒有明白到底是什麼原因。有鑑於此,有返回來用VC的STL。只可惜好景不長,在最近一次測試中發現VC的STL實現又有一處不足之處,讓我細細道來。不知道大家有沒有遇到要在一個string物件中經常插入字串的情況呢(其實這種情況應該經常有才是)?為了示範,我將程式碼簡化了一下如下:
#define N 2000
string body;
// body.reserve(N*26);
for(int i=0;i
cout<
現在可就為難了,到底用誰的呢?好像誰的都不完美。現在只要在看看到底是不是SGI的實現有記憶體洩漏,或者等著看看VS的STL實現的怎麼樣了。或者有誰知道有更好的STL實現告知好嗎?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- STL——STL中vector的實現原理
- C++STL::兩種方式實現STL容器的reference語義C++
- [轉]C++ 之 stl::string 寫時拷貝導致的問題C++
- 您說的這個功能實現不是問題,問題是實現不了~~
- java web start實現關鍵問題(二) (轉)JavaWeb
- 轉:13球稱重問題Java實現 收藏Java
- (C++)STL資料存取效率問題C++
- 模擬STL連結串列類的實現
- 拼多多筆試題(一):多多的魔術盒子筆試
- 一個STL物件的DLL邊界傳遞問題物件
- wmsys.wm_concat 實現行列轉換問題
- CSS實現垂直居中的問題CSS
- CNNIC:網購服裝問題多多 實體店仍然較受青睞CNN
- STL vector的內部實現原理及基本用法
- 轉:八皇后問題 java實現,演算法兩則Java演算法
- javascript/Jscript實現父子窗體的互相引用問題(Powered By ZosaTapo) (轉)JavaScriptJS
- STL程式設計實踐三:剖析STL容器的複製構造和賦值特性 (轉)程式設計賦值
- 侯老師--STL原始碼剖析--書中的疑問二 (轉)原始碼
- 侯老師--STL原始碼剖析--書中的疑問三 (轉)原始碼
- 侯老師--STL原始碼剖析--書中的疑問一 (轉)原始碼
- Python實現拼多多商品資訊抓取方法Python
- VC++中STL的使用 (轉)C++
- 3.Redis實現問題Redis
- 多多多多
- STL程式設計實踐二: 注意迭代子的失效 (轉)程式設計
- golang 實現多型的賦值問題Golang多型賦值
- DDD專案現在實施的問題
- STL中的棧的擴充套件 (轉)套件
- 八皇后問題分析和實現
- tcp 實現簡單http 問題TCPHTTP
- 漢羅塔問題 java實現Java
- Java實現-揹包問題IJava
- Java實現-揹包問題IIJava
- Java實現-揹包問題VIJava
- Python實現:漢諾塔問題Python
- 讀寫者問題-java實現Java
- 遞迴實現漢諾塔問題遞迴
- C++圖書館管理系統 [STL實現]C++