繁体   English   中英

在C / C ++中分配内存失败

[英]Failure on allocating memory in C/C++

我有一个包含共享库的算法的C实现。 共享库的性能在C和C ++中有很大的不同(在C ++中表现更好)。 因此,我将C实现的共享库部分( Imp-1 )更改为C ++( Imp-2 ),而其余部分保持不变。 我分别在Linux中使用gcc和g ++编译了Imp-1Imp-2 在小型问题中, Imp-1Imp-2的性能完全相同。 但是,在同样大的问题中, Imp-1毫无问题地解决了该问题, Imp-2返回std :: bad_alloc错误。 有趣的是,当内存使用量增加到4GB(可用内存为35GB)时,会发生此错误。

为什么会出现此错误? (编译器,操作系统,编译器选项等)

最好的祝福。

看来您的gcc是64位编译器,而g ++是32位编译器。 即使您在32位系统上运行,除非您使用64位编译器编译程序,否则您的程序将无法充分利用64位寻址功能,如果您要寻址的内存超过4GB,这将导致bad_alloc。

我确信您在64位上运行32位编译程序的原因是4GB的限制。 一般而言,内存按用户/内核空间划分,在32位系统上,整个4GB不可用,通常在2GB至3GB之间。 正如您可以寻址到整个4GB内存一样,您似乎正在64位环境中运行32位程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM