c++ - 在析构函数中多次删除

标签 c++ arrays destructor

如果我有两个动态数组作为私有(private)数据成员:

std::string* first_array;
std::string* second_array;

我知道我可以在析构函数中像这样简单地删除

myClass::~myClass()
{
   delete[] first_array;
   delete[] second_array;
}

我担心的是,并非所有时间我都在两个数组中都有数据,所以这样的事情被认为是最佳实践吗?

myClass::~myClass()
{
   if(first_array)
       delete[] first_array;
   if(second_array)
       delete[] second_array;
}

我都试过了,都有效,但不确定哪一个在性能方面更好。

最佳答案

C++ 标准指定对空指针值调用 delete 将导致 NOP(无操作)。它是完全有效的、可接受的并且通常是首选的。

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

相关文章:

c++ - fork 并执行许多不同的进程,并从每个进程中获取结果

javascript - 对多维数字数组求和

javascript - 从数组中生成一个随机单词,然后将其打印到控制台日志中的 javascript 函数中

c++ - 无法访问单例类析构函数中的私有(private)成员

c++ - 字符串函数的返回值

c++ - 最小 float (最接近零)

c++ - 如何在现代 C++ 中实现没有宏的系统特定函数

javascript - 如何将新项目推送到现有数组,该数组的值将从前一项中减去 10,直到它接近 0 或 0?

jakarta-ee - Java,如何在对象销毁时终止进程

c++ - 局部变量的析构函数是否总是保证在超出范围时被调用?