CPallini
Рецепт таков:"вы должен всегда инициализируйте свой указатель" (с nullptr
если вам нужно будет назначить его позже), то вы можете удалить его или нет, в зависимости от обстоятельств.
Другим подходом было бы использование интеллектуального указателя, таким образом, удаление не требуется.
Попробуйте, например:
#include <iostream>
#include <memory>
using namespace std;
struct Dialog
{
Dialog(){ cout << "Dialog ctor\n"; }
~Dialog(){ cout << "Dialog dtor\n";}
};
int main()
{
{
cout << "test case 1\n";
Dialog * pdlg = new Dialog();
if ( pdlg ) delete pdlg;
}
{
cout << "test case 2\n";
Dialog * pdlg{ nullptr };
if ( pdlg ) delete pdlg;
}
{
cout << "test case 3\n";
auto spdlg = make_unique<Dialog>();
}
{
cout << "test case 4\n";
unique_ptr<Dialog> spdlg{};
}
}