有限的分配大小 C++
我使用 Visual Studio 2008。 我已经动态声明了变量 big_massive:
unsigned int *big_massive = new unsigned int[1073741824]
但是,当我尝试调试该程序时,出现以下错误:无效的分配大小:4294967295 字节。 我希望有什么办法可以避免这样的错误?谢谢你!
I use Visual Studio 2008.
I have dynamically declared the variable big_massive:
unsigned int *big_massive = new unsigned int[1073741824]
But, when I tried to debug this program, I got following error: Invalid allocation size: 4294967295 bytes.
I hope there are any path to avoid such error? Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在
sizeof(int)==4
的 32 位 x86 系统上,这种分配根本不可能(您请求 4GB)。进程的总地址空间限制为 4GB,进程本身通常限制为小于该值(32 位 Windows 为 2GB 或 3GB,具体取决于boot.ini
设置和 Windows 版本,不确定哪个限制适用于 64 位 Windows 上的 32 位进程,但 4GB 根本不可能)。对于 64 位情况,您需要有 4GB 的可用虚拟内存来支持该分配才能成功。
That allocation is simply not possible on 32bit x86 systems with
sizeof(int)==4
(you are requesting 4GB). A process's total address space is limited to 4GB, and the process itself is usually limited to less than that (2GB or 3GB for 32bit Windows depending onboot.ini
settings and the Windows edition, not sure which limit applies for 32bit processes on 64bit Windows, but 4GB is simply not possible).For the 64bit case, you'd need to have 4GB of virtual memory available to back that allocation for it to succeed.
32位Windows系统或运行32位程序的64位Windows系统(WoW64)上每个进程的虚拟内存量:2147483648
保存 1073741824 4 字节无符号整数数组所需的内存量:4294967296
不可能适合可用内存量,因此这是无效分配。
Amount of virtual memory per process on 32bit Windows system or 64bit Windows system running a 32bit program (WoW64): 2147483648
Amount of memory needed to hold an array of 1073741824 4-byte unsigned integers: 4294967296
Can't possibly fit in the amount of memory available, so it's an invalid allocation.