我在 C 中声明了一个大小为 150X150X150 的数组。在编译程序以获得相同大小的数组时,编译器没有给出错误或警告。但是当我尝试运行它时,程序停止响应。
void main(){
int i,j,k;
char giv[150][150][50],tar[150][150][50];
for(int i=0;i<150;i++)
{
for(j=0;j<150;j++)
{
for(k=0;k<50;k++)
cin>>giv[i][j][k];
}
}
}
有什么方法可以创建 150*150*150 的数组而不导致运行时错误? 编辑:我知道多维数组可以工作。这不是编译错误。这是一个运行时错误,其原因是我无法查明。
最佳答案
您刚刚在堆栈上声明了两个数组。
每个数组的大小:150 * 150 * 50 字节,或约 1.1MB。
因此您需要从堆栈中请求 2.2MB。
典型的堆栈大小约为 1 或 2MB。
所以我预计您会收到 StackOverflow 异常。
(有点适合这个网站)
关于c - 这个数组可以用C语言实现吗?还有其他办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771178/