Change History (4)

comment:1 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

Итак, валгринд надетектил целую кучу ошибок. Давай смотреть.

  1. MyVector::reserve должен резервировать доп. память, а не просто изменять поле _cp
  2. MyVector::erase и MyVector::insert должны работать без выделения дополнительной памяти (если только вектору не требуется расширение в случае с insert)
  3. К тому же в erase ты выделяешь новый блок памяти, который меньше предыдущего и не меняешь значение _cp, из-за чего последующие вставки могут привести к сегфолту.

Ты, кажется, не совсем поняла логику зачем нужны capacity и size.
capacity -- это размер выделенной памяти, сколько элементов в вектор можно добавить без выделения дополнительной памяти, а size -- это количество уже добавленных в вектор элементов. То есть количество выделенной памяти должно строго соответствовать _cp, а у тебя во многих функциях сначала меняется _cp, а потом либо с памятью ничего не происходит, либо выделяется блок памяти совсем другого размера, нежели _cp.

  1. Еще одно замечание -- у тебя много копипасты размазано по функциям. Код, который выделяет память большего размера и копирует в неё элементы можно написать один раз и использовать в разных местах, вместо того, чтобы писать его каждый раз заново.

comment:2 Changed 3 years ago by Наталья Марцинковская

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 3 years ago by Святослав Власов

Валгринд больше не детектит ошибки, это хорошо :)
Но ошибки остались.

  1. У тебя insert не увеличивает размер вектора (_sz), а должен
  2. resize работает неправильно, он должен резервировать максимум между new_size и 2*_cp памяти, а у тебя всегда резервируется new_size

Тестируй тщательнее свой код перед отправкой! Не сложно ведь было запустить программу и потестировать функции, тем более CLI написан за вас. Ты бы легко отловила ошибку.

Итого 8/10.

comment:4 Changed 3 years ago by Святослав Власов

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.