内存应用程序布局

Rob*_*ert 1 c c++ memory memory-management

以下问题对我来说是一个令人头疼的问题.假设我有两个平台具有相同的硬件,相同的操作系统和相同的编译器.如果我编译完全相同的应用程序,我可以确定两台机器上的内存布局完全相同吗?换句话说,两个应用程序都具有相同的虚拟地址空间,或者很可能不是这种情况.

谢谢你对此的看法!

Ste*_*dit 7

你不能指望它.作为安全功能,某些操作系统(包括Windows)在某种程度上随机化了内存布局.

(这是一个支持链接:http://blogs.msdn.com/b/winsdk/archive/2009/11/30/how-to-disable-address-space-layout-randomization-aslr.aspx)

  • 即使没有ASLR,布局也可能取决于加载动态库的顺序.许多这样的库只使用默认的"首选地址",因此发生冲突并随之重新定位. (4认同)
  • 为了清楚起见,这是一个运行时问题:(http://en.wikipedia.org/wiki/Address_space_layout_randomization) (2认同)