heap corruption
问题:一个很正常的从txt中读数据存入动态1维数组,姑且假设为:
int *data = new int[num];
while (! infile.eof())
{
infile.getline(line,100);
data[count] = atof(line);
++ count;
}
delete []data;
本来运行正常,换了一个txt数据,到delete语句报错“heap corruptiondetected”等等,在网上搜了一些资料,如,才发现是分配数组空间和实际赋值空间不符,导致数组之后的空间被覆盖造成的问题。heap corruption其他人碰到的问题是对字符串赋了多余的值,尤其是'\0';调试我这个程序,发现从txt中明明已经读够了num个数据,还进入了while语句,原来txt数据后加了个回车,infile.eof仍判断没有结束,又读了个0出来。
解决:既然不能保证用户去掉最后的回车,那就加一句:
while (! infile.eof() && count < num)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-49190-1.html
离开制造业这个国民经济的基石