gpt4 book ai didi

c++ - 析构函数问题

转载 作者:行者123 更新时间:2023-11-30 01:24:50 24 4
gpt4 key购买 nike

这两个代码有什么区别?第一种情况是否存在内存泄漏?

没有定义析构函数

 class Library
{
private:
Book books[50];
int index;
public:
Library()
{

index=0;
}
};

或者定义了析构函数

class Library
{
private:
Book *books;
int index;
public:
Library()
{
books=new Book[50];
index=0;
}
~Library()
{
delete books;
}
};

最佳答案

delete books;

应该是

delete[] books;

在第二个中:books 被分配为一个数组,所以必须被删除为一个数组。第一个版本没有内存泄漏。

不同之处在于,在第一种情况下,books 的内存包含在每个 Library 实例的分配中,而在第二种情况下,它是单独分配的, 使用堆。

关于c++ - 析构函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277967/

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