一个32位主机的Windows应用程序的设置共享存储器(使用存储器映射的文件/的CreateFileMapping()API),然后其他32位客户端进程使用该共享存储器互相通信。移植 - 共享内存的X32&x64的处理
我打算将主机应用程序移植到64位平台,一旦准备就绪,我打算32位和64位客户机进程应该能够使用由主要64位主机应用程序设置的共享内存。
主机X32应用程序编写的原代码使用“的size_t”几乎无处不在,因为这4个字节到8个字节不同,因为我们从32倍到x64动,我找取代它。
我打算用“unsigned long long”替换“size_t”,以便它的大小在32位的位上是相同的64位。
你能否给我建议更好的替代方案? 此外,使用“无符号long long”会对x32应用程序的性能产生影响。我猜是的?
研究完成 - 实测值非常有用的制品 - 一个)20在发出从移植32位到64位(www.viva64.com) b)否方式限制在x64 /改变 “的size_t”平台使用编译器标志或任何钩/骗子因为它的typedef
它没有任何意义。一个32位的进程被限制为映射不超过4千兆字节到其地址空间。适合size_t没有问题。 –
@HansPassant:如果我理解正确,他希望对32位和64位版本使用相同的代码,并且它们必须是二进制兼容的,因此他不能使用任何不同的类型定义在两个平台上。 –