exit()的副作用没有退出?

Fra*_*ert 2 c c++

如果我的应用程序内存不足,我想用更改的参数重新运行它.我有malloc/ new在应用程序的各个部分,其大小事先不知道.我看到两个选择:

  • 跟踪所有内存分配并编写重新启动过程,在重新运行更改的参数之前释放所有内容.(当然,如果没有错误,我会在适当的地方释放内存)
  • 重新启动应用程序(例如,WinExec()在Windows上)并退出

我对这两种解决方案都不感到激动.我是否想念一个替代品呢?

谢谢

Pet*_*erK 5

您可以在类中嵌入所有应用程序功能.然后让它在内存耗尽时抛出一个预期.您的应用程序会捕获此异常,然后您可以简单地销毁该类,构建一个新类并再次尝试.一次运行中的所有应用程序,无需重新启动.当然这可能不是那么容易,取决于你的应用程序做什么...