gpt4 book ai didi

c++ - 仅在远程服务器上的“std::bad_alloc”(travis-ci)

转载 作者:行者123 更新时间:2023-11-30 05:22:05 26 4
gpt4 key购买 nike

我只有在使用 travis-ci 服务器进行测试时才会抛出这个奇怪的“std::bad_alloc”。我已经在多台机器上使用相同的编译器选项测试了我的代码,并且我没有调用任何外部库(仅标准 c++11)。

./convexhull ../examples/convexhull/instances/size100space10.csv 1
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
/home/travis/build.sh: line 45: 3957 Aborted (core dumped) ./convexhull ../examples/convexhull/instances/size100space10.csv 1

我是 travis-ci 的新手,所以我的问题可能与它无关,但到目前为止我还没有任何线索。但是,它似乎与某些语法问题无关(因为我的代码是构建和执行的)

有没有人知道在类似的情况下 bad-alloc 的原因是什么?有没有比使用 valgrind 和 travis-ci 更快的方法?

最佳答案

std::bad_alloc 表示您请求在堆上分配数据但没有足够的内存。这可以是使用 new 的直接请求或间接请求,例如创建一个非常大的 std::vector。请注意,由于多种原因很少遇到 std::bad_alloc。首先,默认情况下 linux 总是成功分配内存,因为真正的分配是在您尝试访问它时进行的(在这种情况下程序因 OOM 而终止)。第二个原因是今天我们通常有足够的 RAM。

CI 服务器是一个特例。他们必须提供可靠的基础设施来运行不可靠和不受信任的代码。因此,他们必须限制进程以防止他们占用过多资源。这特别意味着 RAM 使用也受到限制,而且限制不是很高。所以你必须在你的测试中使用更少的内存。可能您应该减少测试数据的大小。

关于c++ - 仅在远程服务器上的“std::bad_alloc”(travis-ci),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39845342/

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