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
...全文
146 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-11-06
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
真相重于对错 2017-11-03
  • 打赏
  • 举报
回复
一步一步调试 我感觉你 while(l==1) 造成越界读写data3d

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧