0

malloc を使用して 16777216 (16mb) を割り当て、その配列を n 回反復しようとすると、セグメンテーション違反が発生します.セグメンテーション違反が発生する理由がわかりません..

register *a;
a = malloc(16777216);
int times, i, dummy, timeTaken;
for (times = 0; times < 10000; times++) {
    for (i = 0; i < 16777216; i += 1) {
        dummy = a[i];
    }
}
4

1 に答える 1

2

そのはず:

 register int *a;
 a = malloc(16777216*sizeof(int));
于 2012-12-12T03:46:06.783 に答える