请教越界及GlobalMemoryStatus()的问题!
在64位机器上运行的程序,按理说内存应该很难被申请完的吧,但是new的时候抛出了bad_allocation的错误,就按照网上说的使用了GlobalMemoryStatus()来获取剩余内存。结果发现还有大量空闲内存,而且通过任务管理器查看进程也只使用了300M左右,但是却new失败了(400w bytes内存);
怀疑GlobalMemoryStatus()使用的不对,于是写了个Test程序试了下,在new的前后分别获取剩余内存,结果发现申请比较大的内存的时候(比如100w bytes),剩余内存只减少了4096 bytes或者其他1024的整数倍,有时候new前后结果居然还是一样,反正没有正好等于new的长度的,请教这是什么原因?
还有64位机器上这种new失败的情况是不是一定就是越界导致堆栈被破坏了(虽然一次申请400w bytes,但是也就100多次左右)?或者是内存碎片?请教下谢谢!