这个数组越界了么

来源:百度知道 编辑:UC知道 时间:2024/06/18 16:14:11
当MAX的初始值小于415时可以运行,大于415的时候就会报错说越界了。不知道为什么,请高人指点啊

#include<iostream>
#include<sstream>
#include<fstream>
#include <math.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define MAX 500

double ran_numf()
{
double a=rand() / (double)(RAND_MAX);
return a;
}

int ran_numN(int n)
{
int b=rand()%n;
return b;
}

int main()
{
srand((unsigned)time(0));
ofstream fout("network.txt");
int a[MAX][MAX]={0};//(初始化整个网络)
double x[MAX]={0.0};//(初始化节点的坐标)
double y[MAX]={0.0};
int m=2;//(初始化网络的节点数)
int n=2;//(每个新加节点所带的边)
double b=0.0;//(距离的权重指数)
double l[MAX][MAX]={0.0};//(两点间距离)
int i=0;
for ( ; i<m; ++i)//(i,节点计数)
{
x[i]=ran_numf();
y[i]=ran_numf();
}
x

不能在栈在分配这么多内存,要分配到堆上
int a[MAX][MAX]={0};//
这里分配了500*500*4大约1M内存,栈大小好像默认就是1M,必然出问题。用new改写

具体那行