这是我发布的第一个问题,如果我有任何失礼,很抱歉
Using C
在我的程序中我创建了一个全局变量指针
double *correlationData;
在 main 中,我创建了这个局部变量:
int arrayLength = 0;
在 main 中,我在 for 循环中有一个 if 语句,其中包含
arrayLength++;
在 for 循环之后,我启动一个数组并将其分配给指针
double correlationArray[arrayLength];
correlationData = correlationArray;
但我在这部分代码中遇到“分段错误”,我不明白为什么。如果我打印出 arrayLength 它是 1900000。首先我想这对于数组来说可能太大了所以我尝试了
correlationData = correlationArray[1900000];
并且没有任何错误。为什么我会收到此错误?
这是由于堆栈溢出造成的。您正在堆栈上创建一个巨大的数组。
1900000
双打的数量是~15 MB
。典型的堆栈大小约为 1 MB。
您需要做的是使用动态分配它malloc()
.
在你的第二个测试用例中:
correlationData = correlationArray[1900000];
这并不能构成数组。这只是一个疯狂的数组访问,幸运的是没有崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)