Ошибка неверного указателя при использовании unique_ptr в тестах

Я не могу ответить, поэтому просто будьте осторожны, если в столбце поддерживаются значения NULL, OLD.x & lt;> NEW.x не достаточно, потому что

SELECT IF(1<>NULL,1,0)

возвращает 0 как и

NULL<>NULL 1<>NULL 0<>NULL 'AAA'<>NULL

Таким образом, он не будет отслеживать изменения FROM и TO NULL

Правильный способ в этом сценарии -

((OLD.x IS NULL AND NEW.x IS NOT NULL) OR (OLD.x IS NOT NULL AND NEW.x IS NULL) OR (OLD.x<>NEW.x))
0
задан Matin Kh 7 April 2019 в 15:33
поделиться

1 ответ

delete [] - что-то, что не new [], ни ваше, строго противопоказано.

Посмотрите на эти строки:

uint8_t testBytes[] = {1, 2, 3, 4};
std::unique_ptr<uint8_t[]> testBytesPtr = std::make_unique<uint8_t[]>(4);
testBytesPtr.reset(testBytes);

Удаление нерелевантного эфемерного динамического распределения оставляет:

uint8_t testBytes[] = {1, 2, 3, 4};
std::unique_ptr<uint8_t[]> testBytesPtr(testBytes);

Что вызывает неопределенное поведение при включении dtor.

По общему признанию, вы перемещаете std::unique_ptr один раз, но это просто сдвигает точную точку, где происходит взрыв.

0
ответ дан Deduplicator 7 April 2019 в 15:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: