C out-of-bound pointer question
deeptech71 at gmail.com
deeptech71 at gmail.com
Thu Nov 15 22:10:43 PST 2007
int x[N];
Values in x[] are (rand()%10)+268435410, aka 268435410..268435419.
The algorith counts each individual value.
// v1.0 uses if( x[n] == ___ )'s
// v2.0:
int k[268435420] = {0}; // k uses almost 1GB of memory
for (n = 0; n < N; n++) {
k[ x[n] ]++;
}
// v2.1:
int k[10] = {0};
int* p = k-268435410;
for (n = 0; n < N; n++) {
p[ x[n] ]++;
}
The values in x[] are guaranteed, so k[ x[n]-268435410 ] are k[0] to
k[9], but is *((k-268435410)+26843541_) safe? (as long as I do no
dereference such out-of-bound memory region)
More information about the freebsd-chat
mailing list