程序中变量自动改变的有关问题

程序中变量自动改变的问题

原文及更多内容: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后面的变量中去了。