Если у меня есть два динамических массивов в качестве частных элементов данных:Multiple удалить в деструкторе
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;
}
Я пробовал и то и другое, и то, и другое работал, не уверен, какой из них лучше с точки зрения производительности.
1) вызов delete по значению нулевого указателя приводит к NOP (No-Operation) и является абсолютно допустимым, приемлемым и обычно предпочтительным. 2) Вместо этого используйте 'std :: vector'. Нет, серьезно, ** используйте **. –
Да, я знаю «std :: vector», это для учебных целей. – hello
Возможный дубликат [Есть ли какие-либо причины для проверки указателя NULL перед удалением?] (Http://stackoverflow.com/questions/615355/is-there-any-reason-to-check-for-a-null- указатель перед удалением) –