我有一个包含共享库的算法的 C 实现。共享库的性能在 C 和 C++ 中有很大的不同(在 C++ 中的性能要好得多)。因此,我已将 C 实现 ( Imp-1 )的共享库部分更改为 C++ ( Imp-2 ),同时保持其余部分相同。我分别在 Linux 中使用 gcc 和 g++编译了Imp-1和Imp-2 。在小型问题中,Imp-1和Imp-2 的表现完全相同。然而,在同一个大型问题中,Imp-1没有任何问题地解决它,Imp-2返回std::bad_alloc错误。有趣的是,当可用内存为 35GB 的内存使用量增加到 4GB 时,会发生此错误。
为什么会出现这个错误?(编译器、操作系统、编译器选项等)
最好的祝福。