B baoling Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #1 一个应用中的指针所指的内存地址是相对地址还是绝对地址?在其他应用程序中得 到该指针的值,但取出指针所指的地址的内容却不对,是不是有一个偏移量的问题, 如何解决这个问题?
J jqw Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #2 delphi与其他工具编写出来的程序 在代码段、数据段等地址肯定不同
2 203010 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #3 Windows下的地址都是相对的,用GlobalLock等函数可能可以解决
硬 硬木花椒 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #4 windows本身有内存保护机制,delphi与c的内存读取不同。但是好想跟汇编的是相似。
B baoling Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #5 都是Delphi编出的程序中也不能互相直接用它们的指针,还是有偏移量的问题, 如何找到一个应用程序读入内存的首地址?
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #6 WIN中每一个进程都在启动时分配到虚拟内存中,仅当需要时才分配物理内存。 所以指针指向的是虚拟内存地址。所以只有指针加内存偏移量才得以存取数据。
2 203010 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #7 你在一个程序中用GlobalAlloc分配内存,用GlobalFree释放 传到另一个程序中用GlobalLock锁住使用,用完GlobalUnlock
X xianjun Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #8 没有什么偏移量的问题 每个进程都以为自己有4G内存,其实是操作系统在骗它们 所以一个进程中的地址在另一个进程中是没有意义的。 建议你看看Windows核心编程一书中关于内存管理及进程管理这两章。
N nunimao Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-09 #9 每个进程都在自己的线性地址(linear address)内运行,线性地址由操作系统翻译到物理 地址(physical address),物理地址才是内存条上的东东:),所以,不同程序上的相同 线性地址对应的物理地址一般是不一样的。有趣的是,在WIN9X下,线性地址的2G-4G是共享 的,也就是说它们对应的物理地址是一样的,这时,你就可以使用指针在不同进程中指相同 的地址了。
每个进程都在自己的线性地址(linear address)内运行,线性地址由操作系统翻译到物理 地址(physical address),物理地址才是内存条上的东东:),所以,不同程序上的相同 线性地址对应的物理地址一般是不一样的。有趣的是,在WIN9X下,线性地址的2G-4G是共享 的,也就是说它们对应的物理地址是一样的,这时,你就可以使用指针在不同进程中指相同 的地址了。