2012-05-22 81 views
-1

我得到了這個程序,2周前運行良好,我沒有改變它現在崩潰的地方。訪問內存時發生奇怪的崩潰

例如,藉此片段:(假設is是一個有效istream和包含<tag>

std::string Str; 
char c; 
for (; is >> c;) 
{ 
    std::cout << c << std::flush; 
    Str += c; 
} 

輸出: < 然後崩潰。

我使用Windows和mingGW,崩潰是一個窗口,說我的程序有encoutner錯誤,Windows正在試圖修復它...

但是,這還不是全部,它崩潰與同Str = c;或initilizing時:我發現這個錯誤之後std::string Str ("op");

30分鐘後,我上的線另一個(先於初始一個):

osstr.write((char *) Word, 16);

osstr是一個有效的ostringstream和Word是一個充滿unsigned char *

編輯:

的問題可能不是在代碼中。因爲對字符串構造函數的簡單調用會崩潰。

std::string Str ("")工作

std::string Str ("str");崩潰

+2

不相關:代替'for'循環的尷尬,你可以簡單循環while(is >> c)'。 –

+7

你可以發佈一個完整的,自包含的可編譯示例展品的問題?因爲我們不知道你的代碼實際上是什麼東西。 (這個錯誤很可能出現在代碼之前的代碼中。) –

+0

[Works fine here](http://ideone.com/uWBv5),你的問題出現在你沒有向我們展示過的代碼中。 – ildjarn

回答

0

對,對不起,不完全信息,但我不能給你全部的代碼。

這個問題來自緩衝區溢出,遠在上面的代碼沒有崩潰之前。