簡體   English   中英

程序地址范圍

[英]Program address range

當我使用C / C ++編寫一個簡單的程序時,我得到的地址范圍是多少? 我的意思是,我可以指向我想要的任何地方。

void* ptr = (int*)0xFFFFFFFF;

該指針實際指向何處? 我猜它不是主存儲器中的實際地址,而只是我程序的“覆蓋”地址。

誰能向我解釋? 運行自己的C程序時,我得到的地址范圍是多少(例如,在Windows中)? 如果願意,我真的可以訪問其他程序的地址范圍嗎?

謝謝!

您的程序在虛擬地址空間中運行,並且指針指向虛擬內存中的位置。 因此,不能,您不能期望將一個指針與另一個程序中的指針具有相同的數值,並使它們都指向相同的實際內存。 相反,如果這樣做,您的程序很可能會崩潰或行為異常(但請注意:這是未定義的行為,因此任何事情都可能發生,並且取決於平台)。

您無法訪問其他程序的內存。 操作系統將它們分開。 唯一可行的方法是通過某種形式化的機制,例如共享內存或某種物理內存映射。

有關Windows操作系統中虛擬地址空間的更多信息: http : //www.tenouk.com/WinVirtualAddressSpace.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM