gpt4 book ai didi

C 程序 - 如何初始化长数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:51 24 4
gpt4 key购买 nike

我有一个这样的程序,

方案一

#include <stdio.h>
#include <string.h>

#define ARRAY_SIZE 0x320204

int main ()
{
unsigned long long_array[ARRAY_SIZE];

memset (long_array, 0, ARRAY_SIZE);

return 0;
}

方案二

#include <stdio.h>
#include <string.h>

#define ARRAY_SIZE 0x320204

int main ()
{
unsigned long long_array[ARRAY_SIZE] = {0};

//memset (long_array, 0, ARRAY_SIZE);

return 0;
}

两个程序都出现段错误。

请说明如何初始化这个长数组。提前致谢。

最佳答案

段错误是因为你试图在堆栈上分配0x320204 long,这可能太多了。在十进制中,这是 3277316 * sizeof(unsigned long),在我的机器上是 3277316 * 8 = 26218528 字节,即大约 25 MB。

第二种初始化方式是最常见的,它将所有元素归零。第一种方法只会将前 ARRAY_SIZE 字节置零,但请记住 sizeof(unsigned long) 通常为 8 字节,因此您需要将其置零sizeof(unsigned long) * ARRAY_SIZE 字节。

关于C 程序 - 如何初始化长数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33134151/

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