Re[22]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 18.04.16 23:51
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Во-первых, крайне необычно сначала разблокировать, а затем блокировать [...]


Вставлю свои пять копеек.
В приведённых вами кусках кода я никаких явных проблем не вижу. А вот код AlexGin, и в самом деле, вызывает некоторые вопросы. Вот тут, к примеру:

if (m_pSerial)
    delete m_pSerial;

m_pSerial = new CSerial();
if (m_pSerial != NULL)
    ....


Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.

А вот следующая строка напрямую вызывает вопросы о знании стандарта С++. Я помню, что какие-то древние версии компилятора возвращали null в случае проблем при аллокации памяти. Но современные компиляторы давно уже выбрасывают исключение, а не возвращают null. Можно явно запросить то старое поведение таким образом:

m_pSerial = new(nothrow) CSerial();


Может быть это особенности того конкретного проекта и компилятора, которым оно собирается, но вот сходу выглядит как незнание стандарта.
А вот тут функция CNewSamsung::SendSmsMass на ~240 выглядит неимоверно раздутой.
С уважением, Artem Korneev.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.