Opened 3 years ago
Closed 3 years ago
#610 closed ожидаются исправления (задача сдана)
WW_11
Reported by: | Tatiana Pridonyants | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
- Валгринд детектит утечки у конструктора с числовым параметром.
- Все тесты на гарантии исключений попадали. Строгую гарантию исключений твои методы не выполняют.
- Вот этот код -- потенциальный UB:
for (; i > 0; i--) { array_[i - 1].~T(); }
Потому что i
имеет тип size_t
, а он беззнаковый, поэтому когда i = 0
, выражение array_[i - 1]
превратится в тыкву и деструктор вызовется у черта на рогах }:-)
- Оператор перемещения в задании не требовался, и написан он у тебя неправильно, поэтому лучше убери
Тебе осталось добавить гарантии исключений. Каждый метод вектора должен иметь строгую гарантию, т.е. если внутри какого-то метода летит исключение, то вектор должен вернуться в то же состояние, что был до вызова метода. В том числе и по capacity. Упросить тебе жизнь в этом поможет swap-trick.
Пока что 6/10
comment:4 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Компиляция упала.
Во-первых, имя неймспейса перепутала. Оно должно быть
containers
.Во-вторых, векто не должен требовать от типа Т наличие конструктора без параметров, если у него не вызываются метод resize и конструктор от числа. У тебя требует (потому что resize вызывается в clear, а clear в деструкторе).
На всех тестах валгринд детектит утечки -- у тебя не совпадает метод, каким ты выделяешь память и освобождаешь её. Прочитай каким методом должна освобождаться память выделенная
std::aligned_alloc
: https://en.cppreference.com/w/cpp/memory/c/aligned_allocИсправь пока эти замечания.