而是一个理论问题 - 任何人都知道如何确保为64位进程分配不超过2GB的连续内存。
这是在移植一个32位C ++应用程序时出现的,该应用程序执行指针运算(坏!)并依赖于减法结果以适应32位整数。在修复指针算法以正确处理> 2GB ptrdiff_t
值之前,为进程强制执行2GB内存空间可能是一个快速修复。
注意:目标平台包括Solaris 10,Linux和Windows。
答案 0 :(得分:3)
C和C ++标准不需要调用malloc()
或operator new
来返回与先前返回的内存相邻的内存,并且很少有现代系统 给出如何虚拟内存在一个进程中发布。
除非您能告诉我们您正在针对哪个平台(可能有特定于平台的解决方案),否则您可能在此方面处于SOL状态。
答案 1 :(得分:0)
重新定义全局new
和delete
运算符,以便任何超过2GB的块分配都会失败...