我試圖調試我編寫的程序。根據調試器,特定的void *
保存值0x804b008。我希望能夠取消此值(將其轉換爲int *
並獲取它的值)。解引用C中的任意內存位置
我得到這段代碼的分段錯誤。 (與void *
程序仍在BTW後臺運行 - 這是「已暫停」)
#include <stdio.h>
int main() {
int* pVal = (int *)0x804b008;
printf("%d", *pVal);
}
我可以看到,爲什麼能夠尊重在內存中的任何一點可能是危險的,所以也許這就是爲什麼這是不工作。
謝謝!
我讀過一些關於操作系統開發的內容,所以我相信我理解你在說什麼。 這個虛擬內存位於RAM中 - 剛剛映射到不同的尋址方案或其他東西? 再次感謝。 編輯:我甚至問過之前回答了我的問題! – Tyler 2010-02-16 05:21:58
虛擬內存就意味着,就編寫程序時所擔心的問題而言,您擁有一個很好的連續內存空間。操作系統爲您處理所有潛在的內存碎片。 – 2010-02-16 05:24:01
謝謝。我收集了很多。我更感興趣的是*它如何在操作系統級別上實現。 http://en.wikipedia.org/wiki/Virtual_memory#Page_tables似乎是如何完成的。 謝謝 – Tyler 2010-02-16 05:26:01