这两个代码的区别是什么?第一种情况是否有内存泄漏?析构函数问题
没有析构函数定义
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;
}
};
第二个有UB。第一个没有内存泄漏。第二也带来了三/五的规则。 – chris
我是一个初学者,我不知道UB是什么意思或哪个规则是三/五 – laura
“三个C++规则”可以很容易地搜索到 - 而UB的意思是“未定义的行为”,即您的编译器可以选择为了回应你正在做的事情而炸毁你的房子,而且这将是符合标准的。 – Yakk