Сообщение Re[23]: JetBrains от 27.04.2016 13:20
Изменено 27.04.2016 13:23 Няшка
Здравствуйте, Artem Korneev, Вы писали:
AK>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.
delete 0 не приводит ни к чему фатальному
можно было просто писать
...
delete m_pSerial;
m_pSerial = new CSerial();
...
AK>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.
delete 0 не приводит ни к чему фатальному
можно было просто писать
...
delete m_pSerial;
m_pSerial = new CSerial();
...
Re[23]: JetBrains
Здравствуйте, Artem Korneev, Вы писали:
AK>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.
delete 0 не приводит ни к чему фатальному
можно было просто писать
...
//if (m_pSerial)
delete m_pSerial;
m_pSerial = new CSerial();
...
AK>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.
delete 0 не приводит ни к чему фатальному
можно было просто писать
...
//if (m_pSerial)
delete m_pSerial;
m_pSerial = new CSerial();
...