use*_*561 3 c arrays segmentation-fault
这是我发布的第一个问题,如果我做任何失礼,我很抱歉
使用C.
在我的程序中,我创建了一个全局变量指针
double *correlationData;
Run Code Online (Sandbox Code Playgroud)
在main中我创建了这个局部变量:
int arrayLength = 0;
Run Code Online (Sandbox Code Playgroud)
在main中,我在for循环中有一个if语句,其中包含
arrayLength++;
Run Code Online (Sandbox Code Playgroud)
在for循环之后,我启动一个数组并将其分配给指针
double correlationArray[arrayLength];
correlationData = correlationArray;
Run Code Online (Sandbox Code Playgroud)
但是我在代码的这一部分遇到了"分段错误",我无法弄清楚原因.如果我打印出arrayLength它是1900000.首先我想也许这对于一个数组来说太大了所以我试过了
correlationData = correlationArray[1900000];
Run Code Online (Sandbox Code Playgroud)
这没有任何错误.为什么我收到此错误?
这是由于stackoverflow.您正在堆栈上创建一个大型数组.
1900000双打是~15 MB.典型的堆栈大约为1 MB.
您需要做的是使用动态分配它malloc().
在你的第二个测试用例中:
correlationData = correlationArray[1900000];
Run Code Online (Sandbox Code Playgroud)
这不会使阵列.这只是一个狂野的阵列访问,(un)幸运地没有崩溃.