程序中的变量,有时会被莫名奇妙地改变。之前明明是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后面的变量中去了。