L2 キャッシュのサイズを測定する宿題をしようとしています。大きな配列 (キャッシュには大きすぎる) を作成して、ランダムな整数で埋めようとしています。次に、さまざまなステップ サイズで歩き回り、パフォーマンスのベンチマークを行います。
私が抱えている問題は、大きな配列にメモリを割り当ててから、1 から 100 までのランダムな整数で配列を埋め始めると、プログラムがクラッシュすることです (スタック オーバーフロー?)。
残念ながら、私はCプログラミングに非常に慣れていません。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int buffSize = sizeof(int) * 2000000;
int * buff = (int*) malloc(buffSize);
srand(time(NULL));
for (int i = 0; i < buffSize; i++)
{
int r = rand() % 100 + 1;
buff[i] = r;
}
return 0;
}