2013-04-30 108 views
0

我剛開始學習動態數組,所以請原諒我,因爲這可能是一個簡單的問題。動態內存分配與陣列

從我所學到的,我們使用動態數組,因此我們可以在程序運行時重新調整數組的大小。播放動態數組的身邊後,我糊塗了與這段代碼:

int nSize = 4; 
int *pnArray = new int[nSize]; 
pnArray[10] = 3; 

cout << pnArray[10] << endl; 

我很困惑,因爲我定義的數組的大小爲4,但還沒有,我是能夠分配的第10指數數字爲3的數組。因此,此代碼輸出3.我不應該得到一個錯誤?

我試着用靜態數組,並最終得到一個錯誤。

回答

1

在C++或C中沒有數組邊界檢查。所以如果你不小心,你可以很容易地超出數組的範圍。這是C和C++中發生的一種常見類型的錯誤,它使用數組範圍外的內存。它甚至可能在一段時間內被忽視。

1

與其他語言不同,C/C++中的數組沒有限制,這是一些錯誤的來源。在你的情況下,你正在訪問內存位置(你的數組的第一個元素+10的位置),它包含一些隨機數據並將其視爲整數。