gpt4 book ai didi

c++ - 如何检查变量是否有资源?

转载 作者:行者123 更新时间:2023-11-28 07:06:57 25 4
gpt4 key购买 nike

C++ 程序中有什么方法可以检查变量的声明是否没有适当的资源?有时这种检查很重要。

例子:

int i = 0; 通常会工作,但如果系统没有资源(RAM/等),它将失败/出现段错误/等。

int *i; 在这种情况下同样会失败,所以 new 我认为这不是解决方案。

最佳答案

这个“检查”在变量进入范围或被初始化时执行(它“有点”难,因为编译器会将变量优化为寄存器重用内存等......)在发生内存错误时进行处理是标准方法。随着操作系统处理堆栈增长和应用程序可用的内存 - 需要“原子”操作。假设场景 -

a) 你的应用程序检查堆栈上是否有足够的空间,操作系统告诉你继续,我还有一些剩余的实际内存页面......
b) 发生上下文切换,其他一些应用带走了所有宝贵的内存
c) 你的应用程序试图占用已经在应用程序脏手中的空间 b)

  • 栈变量会产生栈溢出错误
    然而,堆栈溢出错误并未标准化。在 Windows 上,您可以使用 __try __except block 找出堆栈溢出

  • 用new分配的堆变量会产生bad_alloc(或调用new handler)异常
    如果你想处理这些情况,只需捕获抛出的异常......

  • 分配给 C 函数的堆变量将返回 null
    所以检查他们的返回值

关于c++ - 如何检查变量是否有资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21646887/

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