#include<iostream>
using namespace std;
void main()
{
//以下语句定义一个二维数组,并对其元素赋值(数字1到200)
int a[20][10];
/*int t;
int i,j,k1,k2;*/
int i,j;
for(i=0;i<20;i++)
for(j=0;j<10;i++) a[i][j]=i*10+j+1;//这里我试过
//多种赋值方法,结论是只要对a[i][j]赋值,则出错
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)cout<<a[i][j]<<'\t';
cout<<endl;
}
}
为什么只有200个元素的二维数组,编译器会分配给只读内存?以前我用同样性能的电脑定义过同样的数组就没出这个错误,是因为系统会随机给二维指针分配内存吗? 假如我用
int **a=new int*[20];
for(int i=0;i<20;i++) a[i]=new int[10];
电脑一定会分配合理内存吗?