gpt4 book ai didi

c++ - 如果第一次失败,重新尝试内存分配?

转载 作者:太空狗 更新时间:2023-10-29 20:04:35 26 4
gpt4 key购买 nike

我想编写能在一定程度上防止内存耗尽的代码。我是如何尝试解决这个问题的,如果任何内存分配失败,它会在那一点暂停执行并询问运算符(operator)他们是否可以在重新尝试分配之前尝试释放一些内存(或者如果证明不可能,他们可以自己选择终止程序,由他们决定)

虽然到目前为止我的代码看起来很丑陋。这是进行任何可能扩展数组的 std::vector 操作的 block :

while(pointVector.size() == pointVector.capacity){
// will not break past this if the while statement remains true
// ERROR.report() has the power to kill the program if it needs to
try{
pointVector.reserve(pointVector.capacity * 2); // edited
}catch(...){
ERROR.report(Error::Severity::Memory
, __LINE__, __FILE__
, "Failed to allocate enough points"
, pointVector.size(), 0, 0);
}
}

pointVector.push_back(point);

ERROR 对象专门预先分配了所有资源,因此它可以询问运算符(operator)而不会引起任何新问题(理论上)。我的问题是,是否有更好的形式可以采用? C++ 是否有针对这种情况的“重试”逻辑?还是这就是应该的样子?

最佳答案

一般来说,不,C++ 没有解决这个问题的内置方法。内存不足通常不是编程语言可以解决的问题,因此它会失败,假设没有所需的内存就无法继续运行。由于没有内在的“重试”逻辑,因此您将得到与您所拥有的类似的东西。抱歉,这里没有特别干净的方法。

关于c++ - 如果第一次失败,重新尝试内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834369/

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