所以我正在使用一個動態分配的數組,並將其設置爲保存5個元素,因此應該是0-4。我做了一個函數來保留它,如果有必要的話,但是我想看看當我在[5]中給數組賦值時我是否會遇到程序崩潰。但是,沒有錯誤,直到[6]。動態分配數組的有趣行爲
這裏是我的代碼:
int* dynamic_arr;
dynamic_arr = new int[5];
for(int i = 0; i <= 100; i++){
dynamic_arr[i] = i;
used++;
cout << dynamic_arr[i]<<endl;
}
下面是輸出:
0 //i[0]
1 //i[1]
2 //i[2]
3 //i[3]
4 //i[4]
5 //i[5] <-- should be out of range
,它崩潰之後。
爲什麼我能夠給數組的一部分分配一個值,因爲沒有更好的術語,這個值超出了範圍?
感謝
OpSrcFTW
編輯:欣賞答案的傢伙,謝謝。在下次發佈快速回復之前,我會多讀些書,對不起。
UB表示未定義的行爲! – billz 2013-02-19 23:33:27
未定義的行爲會在你不注意時觸動你。 – 0x499602D2 2013-02-19 23:35:54
這確實很有趣。我總是期待看到跳舞的獨角獸。這很奇怪,他們沒有出現在你的機器上! – stefan 2013-02-19 23:36:58