Opened 4 years ago
Closed 4 years ago
#535 closed ожидается проверка (задача сдана)
WW #9
Reported by: | Денис Лочмелис | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW shared_ptr | Version: | 2.0 |
Keywords: | Cc: |
Description
V1
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Понял насчет нулевого указателя, отсюда появились ассерты, плюс нашел один инвариант - положительность ref_count, проверять его осмысленно, кажется, только когда оно уменьшается.
-fsanitize=leak никаких утечек не показывал, поэтому я и отправил. Видимо, valgrind надежнее.
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
69 for some reason '&other' can never be NULL
70 assert(&other != nullptr);
&x не может быть nullptr по определению nullptr из Стандарта. nullptr - специально выделенное значение, которое не совпадает с адресом чего-либо еще.
Еще было бы неплохо добавить assert(ref_count_ == 0) в деструктор Storage
Note: See
TracTickets for help on using
tickets.
У класса есть понятные инварианты, которые стоит проверить с помощью assert
Сейчас некоторые методы работают некорректно в случае, если хранится нулевой указатель
Самостоятельно звать деструктор никогда не нужно.
lifetime у экземпляра точно не закончился внутри метода класса
Деструктор зовется одним из двух способов:
Используйте санитайзеры / valgrind, пока что не работает