首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C/C++中内存分配失败

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

Stack Overflow用户
提问于 2012-04-29 07:56:18
回答 1查看 222关注 0票数 2

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

为什么会发生此错误?(编译器、操作系统、编译器选项等)

诚挚的问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-29 08:38:57

您的gcc似乎是一个64位编译器,因为g++是32位编译器。即使在32位系统上运行,除非使用64位编译器编译程序,否则程序也无法充分利用64位寻址功能,如果您想要寻址超过4GB,就会产生bad_alloc。

我确信您在64位上运行32位编译程序的原因是4GB限制。一般来说,内存被拆分为User/Kernal,在32位系统中,整个4GB是不可用的,通常在2GB到3GB之间。由于您可以处理整个4GB,看起来您正在64位环境上运行一个32位程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10370596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档