C++ 0x771CC7C9处未处理的异常(ntdll.dll)
我有以下代码,其中数组在函数中动态声明。以下程序在Visual Studio 2013中完美编译。但是,在运行时,该代码在打印数组时中断,错误代码如下: 检测到严重错误c0000374 WaveEquation1D.exe已触发断点。 WaveEquation1D.exe中0x771CC7C9(ntdll.dll)处的首次偶然异常:0xC0000374:堆已损坏(参数:0x771F8890) WaveEquation1D.exe中0x771CC7C9(ntdll.dll)处未处理的异常:0xC0000374:堆已损坏(参数:0x771F8890) 发生了什么事?请帮忙C++ 0x771CC7C9处未处理的异常(ntdll.dll),c++,dynamic,C++,Dynamic,我有以下代码,其中数组在函数中动态声明。以下程序在Visual Studio 2013中完美编译。但是,在运行时,该代码在打印数组时中断,错误代码如下: 检测到严重错误c0000374 WaveEquation1D.exe已触发断点。 WaveEquation1D.exe中0x771CC7C9(ntdll.dll)处的首次偶然异常:0xC0000374:堆已损坏(参数:0x771F8890) WaveEquation1D.exe中0x771CC7C9(ntdll.dll)处未处理的异常:0xC0
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;
int solver(double i, double v, double c, double L, int Nx, double C1, double t);
int solver(double i, double v, double c, double L, int Nx, double C1, double t)
{
double *msh = new double(Nx);
double delta = L / Nx;
int count = 0;
for (int i = 0; i <= Nx; i++)
{
msh[i] = 0.0;
}
for (int i = 0; i <= Nx; i++)
{
msh[i] += delta*count;
count++;
}
for (int i = 0; i <= Nx; i++)
{
cout << msh[i] <<endl;
}
delete[] msh;
//
return 0;
}
int main()
{
cout << "Hello"<<endl;
int size;
int j;
j = solver(1, 0, 0, 20.0, 20, 0, 1);
_getch();
return 0;
}
#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
整数解算器(双i、双v、双c、双L、整数Nx、双C1、双t);
整数解算器(双i、双v、双c、双L、整数Nx、双C1、双t)
{
double*msh=新的double(Nx);
双增量=L/Nx;
整数计数=0;
对于(int i=0;i
应该是
double *msh = new double[Nx];
否则,您只是在1 double上分配一个指针
正如其他用户评论的那样,条件是错误的
for (int i = 0; i <= Nx; i++)
for(int i=0;i)此循环条件是错误的:for(int i=0;i)您可能没有注意到for
loopsi中的条件
for (int i = 0; i <= Nx; i++)
for (int i = 0; i < Nx; i++)
#include <vector>
std::vector<double> msh(Nx); // instead of new double