mic*_*yue 3 c++ windows winapi
我有一个可以在Windows上同时启动多次的应用程序.
在这个应用程序中,我们在开始时调用GlobalAllocPtr()来分配内存,如下所示:
// allocate a structure
LPSlcDataMgr lpMgr = (LPSlcDataMgr)GlobalAllocPtr(GHND, sizeof(TSlcDataMgr));
Run Code Online (Sandbox Code Playgroud)
我们在两台机器上测试过(两者都是XP专业版2002,一台是SP2,另一台是SP3),但在SP3上,我们的应用程序会随机崩溃
经过调查,我们发现:
GlobalAllocPtr()始终为不同的应用程序进程返回相同的地址是否有可能GlobalAllocPtr()在WinXP SP3上返回相同的地址是我们崩溃的直接或间接原因?
提前致谢.
在过去的15年或更长时间里,每个理智的操作系统都使用了虚拟内存.每个进程都有一个完整的虚拟地址空间给自己.因此,两个不同的进程可以指向同一地址,没有任何问题或冲突.他们从不会看到彼此的数据,因为他们每个人都有自己的地址"副本"和其他地址.
这就是操作系统的工作原理,除非您正在编写内核模式驱动程序,否则您不需要知道底层物理地址是什么,并且您通常不知道底层物理地址是什么.
不,这不会导致崩溃.你的问题是别的.
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |