我正在嘗試做一個家庭作業分配來測量二級緩存的大小。我試圖用隨機整數創建並填充大型數組(對於高速緩存來說太大),然後我將以不同的步長進行遍歷並對性能進行基準測試。將值插入大數組時,程序崩潰C
我遇到的問題是當我爲大數組分配內存,然後開始用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;
}
你是否檢查'malloc'的返回值? –
當i = 2000000時發生錯誤。您分配的變量爲每個sizeof(int)的2000000個實體留有空間。使bufsize ==(4字節)* 2000000 == 8000000)。嘗試'for(int i = 0 i <2000000; i ++);' – ryyker