gpt4 book ai didi

c - 使用变量初始化数组时出现段错误

转载 作者:太空狗 更新时间:2023-10-29 16:09:03 25 4
gpt4 key购买 nike

这是我发布的第一个问题,如果我犯了任何失礼,我深表歉意

使用 C

在我的程序中我创建了一个全局变量指针

double *correlationData;

在 main 中我创建了这个局部变量:

int arrayLength = 0;

在 main 中,我在 for 循环中有一个 if 语句,其中包含

arrayLength++;

在 for 循环之后我初始化一个数组并将其分配给指针

double correlationArray[arrayLength];
correlationData = correlationArray;

但是我在代码的这一部分遇到了“段错误”,我不知道为什么。如果我打印出 arrayLength,它是 1900000。首先我认为这对于数组来说可能太大了,所以我尝试了

correlationData = correlationArray[1900000];

而且没有任何错误。为什么会出现此错误?

最佳答案

这是由于计算器溢出。您正在堆栈上创建一个巨大的数组。

1900000 double 是 ~15 MB。一个典型的堆栈大约为 1 MB。

您需要做的是使用 malloc() 动态分配它。

在你的第二个测试用例中:

correlationData = correlationArray[1900000];

这并没有构成数组。这只是一个(不)幸运的没有崩溃的疯狂数组访问。

关于c - 使用变量初始化数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7987672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com