我有时需要 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
将是无法使用的无效实例。
关于c++ - 在构造函数中捕获内存分配错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070057/