gpt4 book ai didi

c++ - 在构造函数中捕获内存分配错误?

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:30 25 4
gpt4 key购买 nike

有时我需要一个 C++ 类来分配动态内存。由于这可能会失败,因此我需要检测何时无法分配内存。通常,我会按照下面的示例执行此操作,即。我没有在构造函数中分配内存,但为此有一个单独的方法,可以捕获 bad_alloc 异常。

有没有办法在构造函数中分配内存并捕获异常?

try {
my_class my_instance;
}
catch ...

不起作用,因为 my_instance 的范围仅限于 try block 。

这是一个最小的例子:

#include <iostream>

class my_class {
private:
char * data;

public:
my_class () {
data = NULL;
}

~my_class () {
delete [] data;
}

void init () {
data = new char [10000000000];
}

void write (int x) {
data[x] = 1;
}
};

int main() {
my_class my_instance;
try {
my_instance.init();
}
catch (std::bad_alloc&) {
std::cout << "Memory overflow.\n";
return 1;
}

my_instance.write(10);

std::cout << "OK.\n";
return 0;
}

最佳答案

不是真的。 my_instance 将是无法使用的无效实例。

http://www.gotw.ca/publications/mill13.htm

关于c++ - 在构造函数中捕获内存分配错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070057/

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