程序中變量自動改變的問題

原文及更多內容:http://yysource.sourceforge.net/?p=99

程序中的變量,有時會被莫名奇妙地改變。之前明明是111,在某個函數過後可能就變成31348了。

很可能是因爲程序中的其他變量(比如字符串)寫入超出範圍了,但是由於超出的部分剛好是本程序的其他變量所在的內存空間,

所以系統不會報錯。但是你其他的變量就這樣不幸地“被改變”了。


比如,在讀取文件內容的時候,往往需要循環讀取,直到不能再讀

……定義變量……

char contents[255];

int i = 0;

……各種無關函數紛紛路過……

while (ReadFile(hFile, contents + strlen(contents), 255, NULL, NULL))) {}

假設讀了第一次後, strlen(contents) == 200 ,還可以再讀。那麼這次真的讀到了 255 個字節,

而此時 contents 只剩下 55 字節可以裝了……於是,多出來的部分全部硬塞到 i,以及i後面的變量中去了。

發佈了190 篇原創文章 · 獲贊 32 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章