heap corruption detected:after normol block (#154) at 0x00606F20

qq_37918581 2017-11-03 04:15:37
#include <iostream>
#include <fstream>
#include <stdio.h>
#define _CRT_SECURE_NO_WARNING
#pragma warning(disable:4996)
using namespace std;
int main() {
int timestep=1000;
int id=216;
//内层是粒子id,外层是timestep;
double **data3d = new double*[timestep];//最外层
for (int k = 0; k < timestep; k++)
{
data3d[k] = new double[id];
}//利用指针创建动态三维数组;
//读取txt数据
int n = 0;
int i = 0;
FILE * pFile;
pFile = fopen("E:\\data.txt","r");
int l = 1;
while(l==1)
{
fscanf(pFile, "%lf", &data3d[n][i]);
cout << data3d[n][i] << endl;
if (data3d[n][i] == 999.9)
{
l=0;
cout << n << endl;
cout << i << endl;
}
if (i<217)
{
i++;
}
else
{
n++;
i = 0;
}
};

for (int p = 0; p<timestep; p++)
{
delete [] data3d[p];
}
delete[] data3d;
system("pause");
return 0;
}
就是一个很简单的逐行读取数据的程序,为了简单起见手动在文件结尾添加了999.9用于结束读取,
TXT中的数据是类似于这样的
2.15464
0.154646
0.2456
...全文
92 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2017-11-06
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
  • 打赏
  • 举报
回复
一步一步调试 我感觉你 while(l==1) 造成越界读写data3d
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2017-11-03 04:15
社区公告
暂无公告