我正在尝试初始化一个整数数组并将所有元素设置为 1。我需要该数组的上限为 4294967295,或 32 位可能的最大数量unsigned int
。
这对我来说似乎是一项微不足道的任务,应该是,但我遇到了segfault
. 我可以for
空循环运行它,它似乎工作正常(虽然速度很慢,但它正在处理近 43 亿个数字,所以我不会抱怨)。当我尝试在循环中执行任何类型的操作时,问题似乎出现了。我在下面的指令 - primeArray[i] = 1;
- 导致segfault
错误。据我所知,这不应该导致我超出数组。如果我注释掉那一行,没有segfault
。
已经很晚了,我疲惫的眼睛可能只是错过了一些简单的东西,但我可以用另一副。
这是我所拥有的:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdint.h>
#define LIMIT 0xFFFFFFFF;
int main(int argc, char const *argv[])
{
uint32_t i;
uint32_t numberOfPrimes = LIMIT; // hardcoded for debugging
int *primeArray = (int*) malloc(numberOfPrimes * sizeof(int));
for (i = 0; i < numberOfPrimes; ++i) {
primeArray[i] = 1;
}
}