2012-10-05 91 views
0

我想將修復內存地址分配給二維數組。 舉例來說,對於簡單的整數,我們可以這樣做: int * p =(int *)0xabcdf34;如何將二維數組的指針指向C/C++中的內存地址

我需要分配內存從修復位置開始說0xf3ab25到一個二維數組。我該怎麼做。請幫忙。編輯: 我正在玩的回憶。我想將矩陣的所有內存分配給緩存或主內存。我想檢查對計算和運行時間有什麼影響。我正在使用模擬器,所以我有直接的地址。 假設我想使用矩陣矩陣[100] [100]

+0

爲什麼?這解決了什麼問題?聽起來就像你問我們[解決你的問題的最後10%是沒有道理的。](http://blogs.msdn.com/b/oldnewthing/archive/2006/03/23/558887.aspx)。我可能是錯的,但有些環境會很好,因爲在幾乎所有情況下都是錯誤的。 –

+0

也許不是固定的地址,但我肯定會遇到這個地址由'malloc'提供的地址。 –

回答

0

您無法決定要分配的內存地址,因爲您無法確定程序的真實佈局。

它是由編譯器(靜態變量),或在運行時(自動變量和動態分配的內存)

4

事情是這樣的決定:

int foo() { 
    int (*p)[10] = (int (*)[10])0xf3ab25; 
    return p[3][4]; 
} 
+0

這將在一般情況下工作?我認爲在這個問題上面對這個問題可能不是個好主意。 –

+0

關於它的思考...我正在刪除downvote,直到我們從OP獲得更多信息。很難敲你回答這個問題。 –

+1

我不是他媽媽,我只是回答這個問題。是的,'p' *是一個二維數組。此代碼編譯得很好並生成正確的地址算術([3] [4]的讀取位於距初始化地址136個字節的偏移處)。 –