Memory Management[20]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 simonwan 的 blog

问题出在 dll 被加载之前,addressof_i 无法确定下来。因此,dll 必须内含一个待修正记录(fixup record),告诉加载器记得修正 addressof_i 的值。当 dll 第一次载入,没有问题。但是如果另一个行程随后也加载此 dll,而加载地址却没有与前一行程相同的话,由于 addressof_i 已被用于第一个行程(它是被共享的,不是吗),载入器不能够插手修改 addressof_i 的值。于是,对于第二个行程而言,addressof_i 的值是错误的。利用指标,可以解决这个问题。我可以使用一个非共享的数据变量,内放一个指标指向共享数据。由于此一指标是每个行程皆有一份,所以加载器可以修正其值,使它在每一个行程中都正确无误。

本文关键:Memory Management
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top