在堆栈上分配数组时出现运行时错误
Runtime Error while allocating an array on the stack
int main() {
long long int n, m, j, l, a[1000000000][1000000000];
int k, i;
scanf("%lld", & n);
scanf("%lld", & m);
for (j = 0; j < n; j++) {
for (l = 0; l < m; l++) {
a[j][l] = 0;
printf("%d\n", a[j][l]);
}
}
for (j = 0; j < n; j++) {
for (l = 0; l < m; l++) {
printf("%d\n", a[j][l]);
}
}
return 0;
}
当我 运行 时,我总是得到 运行 时间 error.Can 任何人请给我建议一个解决方案来克服它???我需要这个来回答一个棋盘可能有 1000000000*1000000000 个方块的竞争性编程问题,我需要用它执行多个操作。
因为在大多数实现中,您不能创建那么大的局部变量。
你真的有 10000000000*10000000000 = 100000000000000000 字节的内存吗?
在大多数系统上,限制在 64k 到 10 兆字节之间。当然,在您尝试制作 [][].
大小附近的任何地方都不行
您需要使用 malloc
来尝试分配内存。局部变量是在 运行 时间内在堆栈上创建的,您 运行 堆栈内存不足,导致程序崩溃。
int main() {
long long int n, m, j, l, a[1000000000][1000000000];
int k, i;
scanf("%lld", & n);
scanf("%lld", & m);
for (j = 0; j < n; j++) {
for (l = 0; l < m; l++) {
a[j][l] = 0;
printf("%d\n", a[j][l]);
}
}
for (j = 0; j < n; j++) {
for (l = 0; l < m; l++) {
printf("%d\n", a[j][l]);
}
}
return 0;
}
当我 运行 时,我总是得到 运行 时间 error.Can 任何人请给我建议一个解决方案来克服它???我需要这个来回答一个棋盘可能有 1000000000*1000000000 个方块的竞争性编程问题,我需要用它执行多个操作。
因为在大多数实现中,您不能创建那么大的局部变量。
你真的有 10000000000*10000000000 = 100000000000000000 字节的内存吗?
在大多数系统上,限制在 64k 到 10 兆字节之间。当然,在您尝试制作 [][].
大小附近的任何地方都不行您需要使用 malloc
来尝试分配内存。局部变量是在 运行 时间内在堆栈上创建的,您 运行 堆栈内存不足,导致程序崩溃。