gpt4 book ai didi

c++ - 从内存不足故障中恢复

转载 作者:行者123 更新时间:2023-11-28 05:52:58 25 4
gpt4 key购买 nike

我正在使用一个内存池来创建很多对象。我所有的对象都派生自一个基类,该基类的新建/删除被覆盖以使用我的内存池,基本上它们调用 pool.allocate(size)。

我想做的是当池内存用完时(系统中仍有可用内存可以运行)我想将所有内容设置回开头。我正在考虑在分配失败时在 main 和 goto 标签之后设置一个标签,重置池并重新开始。

所有非堆栈分配都由内存池处理。这是实现这一目标的明智方法吗?会不会有任何问题?

编辑:

这是在嵌入式平台上运行的,因此没有操作系统也没有异常(exception)。我正在尝试实现受控重启而不是内存不足导致的崩溃。池足够大以进行计算,我正在尝试控制崩溃以防某些功能出错。

运行之间没有要保存的状态。我正在尝试通过软件实现按下重置按钮的过程。所以我可以重置回主要通知应用重启的开始。

最佳答案

我曾经使用 setjmp()/longjmp() 做过类​​似的事情。它并不完美或没有问题,但在大多数情况下它是有效的。喜欢:

jmp_buf g_env;

int main()
{
int val = setjmp(g_env);
if (val) {
// restarting, do what you need to do
}
// initialize your program and go to work
}

/// where you want to restart:
longjmp(g_env, 101); /// 101 or some other "error" code

这真的是一个goto,所以,记得自己做任何清理工作。

关于c++ - 从内存不足故障中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833289/

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