您是否知道是否有方法可以将malloc恢复到初始状态,就像程序刚刚启动一样?
原因:我正在开发一个使用nintendods devkitpro的嵌入式应用程序,我希望能够在出现软件故障的情况下提高调试支持。我已经可以捕获大多数错误,例如返回控制台菜单,但在捕获std::bad_alloc时无法工作。
我怀疑我用于“软重新启动”的代码在某种程度上涉及到我无法控制的malloc()本身,所以我想“忘记正在运行的应用程序的一切,重新开始”。
发布于 2010-01-14 20:23:02
重新开始的唯一方法是从存储中重新加载应用程序。DS将所有内容加载到RAM中,这意味着数据段被就地修改。
发布于 2009-12-16 21:25:43
没有办法做到这一点的可移植性,尽管可以想当然的嵌入式实现的C++提供它作为一个扩展。相反,您应该考虑编写自己的分配系统,使用内存池,或者使用现有的库。
发布于 2009-12-16 21:26:35
只有一次我做了类似的事情,我们使用了我们自己的分配器,它将保留对每个已分配块的引用。如果我们想回滚,我们将释放所有分配的块,并执行longjmp来重新启动程序。
https://stackoverflow.com/questions/1914633
复制相似问题