我想做一个简单的计算,我需要交换指向两个数组的指针。所以,我可以在计算时在这两个数组之间切换。以下是该方向的简单代码。如果我注释掉代码但第二个代码给出段错误,第一个代码运行良好。我不明白注释代码有什么影响。它只是创建一个数组。我的代码中是否还有其他错误导致了这个奇怪的问题?
运行良好
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
/*
int fixed[1024][1024];
for (int i = 0; i < 1024; i++) {
for (int j = 0; j < 1024; j++) {
fixed[i][j] = 1;
}
}
*/
float o_array[1024][1024];
float n_array[1024][1024];
float (*old_array)[1024] = o_array;
float (*new_array)[1024] = n_array;
for (int i = 0; i < 1024; i++) {
for (int j = 0; j < 1024; j++) {
old_array[i][j] = 100.0f;
}
}
return 0;
}
这给出了段错误
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int fixed[1024][1024];
for (int i = 0; i < 1024; i++) {
for (int j = 0; j < 1024; j++) {
fixed[i][j] = 1;
}
}
float o_array[1024][1024];
float n_array[1024][1024];
float (*old_array)[1024] = o_array;
float (*new_array)[1024] = n_array;
for (int i = 0; i < 1024; i++) {
for (int j = 0; j < 1024; j++) {
old_array[i][j] = 100.0f;
}
}
return 0;
}
最佳答案
默认情况下,大多数编译器将堆栈的默认内存限制设置得非常低(通常在 1mb 左右)。
假设每个 float 为 4 个字节,一个 1024 个单元的多维数组将占用 1024 x 1024 x 4 = 4,194,304 个字节或大约 4 兆字节。
您可以使用命令行或在 IDE 的构建/链接器选项中增加编译器堆栈的大小。
关于c++ - 为什么交换二维数组指针不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128579/