我試圖抓住malloc函數在C,和我寫以下代碼:Ç - malloc和陣列混亂
int i;
int *arr = (int*)malloc(5*sizeof(int));
if(arr==NULL){
printf("Failed to allocate memory for arr...\n");
exit(1);
}
我認爲,這表示,只有5個元素可以被添加到陣列中。爲了測試這是否屬實,我添加了以下代碼:
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
arr[5] = 6;
arr[6] = 7;
arr[7] = 8;
arr[8] = 9;
for(i=0;i<9;i++){
printf("%d\n",arr[i]);
}
令人驚訝的是,該代碼編譯和運行完美。這怎麼可能?
一旦你已經明白了這一點(基於人們給出的答案或其他方式),看看[緩衝區溢出](http://en.wikipedia.org/wiki/Buffer_overrun)。有趣和有趣的。 – 2012-07-18 23:06:25