整数配列を初期化し、すべての要素を 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;
}
}