在C ++程序中有没有办法检查变量的声明是否没有适当的资源?有时这种检查很重要。
示例:
int i=0;
通常可以正常工作,但如果系统没有资源(RAM / etc),它将失败/ segfault /等。
int *i;
同样会失败,所以new
我认为不会是一个解决方案。
答案 0 :(得分:1)
当变量进入范围或被初始化时执行此“检查”(由于编译器将变量优化为寄存器重用内存等,因此“更小”更难)
处理内存错误是标准方法。随着操作系统处理堆栈增长和应用程序可用的内存 - 需要“原子”操作。
假设情景 -
a)你的应用程序检查堆栈上是否有足够的空间,操作系统告诉你继续,我仍然有一些真实内存页面...
b)发生上下文切换,其他一些app消除了所有宝贵的记忆
c)你的应用程序试图占用已经在应用程序b)的脏手中的空间