Opened 3 years ago

Closed 3 years ago

#397 closed ожидается проверка (задача сдана)

Lab 8

Reported by: antonenko.mixail Owned by: Святослав Власов
Component: WW shared_ptr Version: 3.0
Keywords: Cc:

Description


Change History (7)

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

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

Проверяй мейкфайл перед отправкой:

[1000][svloyso:lab_08]$ make
g++-10 -O2 -Wall -Werror -std=c++11 -Iinclude -c -MMD -o bin/main.o src/main.cpp
make: g++-10: No such file or directory
make: *** [Makefile:17: bin/main.o] Error 127
  1. Валгринд детектит ошибки на всех тестах кроме первого -- течет память (очевидно, раз ты не освобождаешь память под матрицу)
  2. Double free в деструкторе ~Storage ты вероятно получал по той причине, что зачем-то вызываешь его из decr. Не нужно его вызывать явно. Когда у тебя заканчиваются ссылки -- просто удаляй storage_ и деструктор сам вызовется.
  3. Есть копипаста в конструкторе и методе reset, от неё можно избавиться

1/10 пока

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

Upd, минорное:

  1. return storage_ == 0; --- nullptr же. А вообще когда хотят законвертить поинтер в бул обычно пишут return !!storage_;
  2.   if (storage_)
        return storage_->getObject();
      else
        return nullptr;
    

тут else лишний, а вообще можно заюзать тернарный оператор, будет покороче:

return storage_ ? storage_->getObject() : nullptr;

comment:3 Changed 3 years ago by antonenko.mixail

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

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

Type: ожидается проверкаожидаются исправления
  1. typedef для структур в С++ не нужен. Можно просто писать struct Storage {...}; и в дальнейшем обращаться к имени структуры как Storage, без указания ключевого слова struct.
  2. У операторов -> и . почти самый высокий приоритет, а значит скобки при обращении к полю или методу у объекта не нужны почти никогда
  3. delete nullptr; -- это безопасная операция, она не делает ничего, поэтому проверять указатель на nullptr перед вызовом delete не нужно

В остальном всё ок, 9/10

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

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

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

Version: 2.03.0

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

Resolution: задача сдана
Status: assignedclosed

10/10

Note: See TracTickets for help on using tickets.