gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:29 26 4
gpt4 key购买 nike

我有一个包含共享库的算法的 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 位程序。

关于c++ - 在 C/C++ 中分配内存失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com