gpt4 book ai didi

c++ - 构造函数中的内存分配异常

转载 作者:IT老高 更新时间:2023-10-28 23:10:48 26 4
gpt4 key购买 nike

我有一个构造函数,它使用 new 运算符分配多个内存块。

X::X() {
a = new int[100];
b = new char[100];
c = new float[100];
}

我的问题是,如果c分配失败,构造函数抛出异常,ab的内存会不会自动释放?

最佳答案

ab 指向的内存不会自动释放。每个 new[] 都必须使用 delete[] 显式平衡。

即使您的析构函数执行了删除操作(假设 abc 是类成员),您仍然会泄漏内存。这是因为在这种情况下,析构函数不会被调用,因为对象构造失败。

使用 std::vectors 可以避免这些问题。

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

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