#245 closed ожидаются исправления (задача сдана)
ДЗ#3. linked_ptr
Reported by: | basharin.egor | Owned by: | rutsky,grabovoy.philipp |
---|---|---|---|
Priority: | проверка | Milestone: | ha3-deadline |
Component: | HA#3 linked_ptr | Version: | 1.0 |
Keywords: | Cc: | eaniconer@… |
Description
Прошу проверить домашнее задание №3.
Change History (20)
comment:1 Changed 6 years ago by
comment:2 Changed 6 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Tested revision 246 by basharin.egor.
Smoke tests
test | stage | result | info | log |
---|---|---|---|---|
gcc62 | WARNING | |||
run | SUCCESS | |||
valgrind | SUCCESS | |||
gcc62-asan | WARNING | |||
asan | SUCCESS | |||
clang-san | WARNING | |||
san | SUCCESS | |||
gcc62 | WARNING | |||
run | SUCCESS | |||
valgrind | SUCCESS | |||
gcc62-asan | WARNING | |||
asan | SUCCESS | |||
clang-san | WARNING | |||
san | SUCCESS | |||
Common header used in some tests: common.h
comment:4 Changed 6 years ago by
Егор, сервер с тестами сейчас работает, пожалуйста, исправьте замечания из автотестов.
comment:5 Changed 6 years ago by
Tested revision 501 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
Common header used in some tests: common.h
comment:6 Changed 6 years ago by
Tested revision 503 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
Common header used in some tests: common.h
comment:7 Changed 6 years ago by
Tested revision 504 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
Common header used in some tests: common.h
comment:8 Changed 6 years ago by
Tested revision 505 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
run_gen_016_6x7_027x428_70x90_3x4_3x5_2x6_4x7_7x7_94DC920E.cpp | SUCCESS | |||
FAILURE | exit code 139 | run_gen_016_6x7_027x428_70x90_3x4_3x5_2x6_4x7_7x7_94DC920E-run.log | ||
Common header used in some tests: common.h
comment:9 Changed 6 years ago by
Tested revision 507 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
run_gen_016_6x7_027x428_70x90_3x4_3x5_2x6_4x7_7x7_94DC920E.cpp | SUCCESS | |||
FAILURE | exit code 139 | run_gen_016_6x7_027x428_70x90_3x4_3x5_2x6_4x7_7x7_94DC920E-run.log | ||
run_gen_021_8x9_4113x4861_397x815_4x4_3x4_5x5_4x4_C4F2B4F7.cpp | SUCCESS | |||
FAILURE | exit code 139 | run_gen_021_8x9_4113x4861_397x815_4x4_3x4_5x5_4x4_C4F2B4F7-run.log | ||
run_gen_030_06x14_229x428_01476078x30421754_4x4_3_54CD291D.cpp | SUCCESS | |||
FAILURE | exit code 139 | run_gen_030_06x14_229x428_01476078x30421754_4x4_3_54CD291D-run.log | ||
run_gen_055_15x26_28180541x35357669_1448194617849_DF45FC8F.cpp | SUCCESS | |||
FAILURE | exit code 139 | run_gen_055_15x26_28180541x35357669_1448194617849_DF45FC8F-run.log | ||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 139 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
Common header used in some tests: common.h
comment:10 Changed 6 years ago by
Tested revision 508 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
SUCCESS | ||||
FAILURE | exit code 139 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
Common header used in some tests: common.h
comment:13 Changed 6 years ago by
Milestone: | ha3-milestone1 → ha3-milestone2 |
---|
Замечания:
- Не используйте виртуальные методы. В данном случае базовый класс это приватная деталь реализации, и никто не должен хранить
linked_ptr
по указателю на базовый класс, и виртуальный деструктор здесь не нужен.
- Можете упростить выражение
delete static_cast<decltype(p_)>(p_)
?
- Сейчас в делитере вы храните указатель на удаляемое значение, а в
linked_ptr
храните делитер. Таким образом вы дважды храните указатель на удаляемое значение.
- Вы создаёте делитер от неполного типа в следующем тесте, что является ошибкой:
#include "linked_ptr.hpp" struct C; int main() { // Should compile. Completeness of C is not needed. smart_ptr::linked_ptr<C> p1; smart_ptr::linked_ptr<C> p2(p1); // Shouldn't compile: //smart_ptr::linked_ptr<C> p3(reinterpret_cast<C *>(123)); //p1.reset(reinterpret_cast<C *>(123)); }
In file included from /mnt/src/comp_incomplete_type_bonus.cpp:1: /mnt/src/linked_ptr.hpp:64:44: warning: deleting pointer to incomplete type 'C' may cause undefined behavior [-Wdelete-incomplete] p_(nullptr), destroyer_([&](){ delete static_cast<decltype(p_)>(p_); }) ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /mnt/src/comp_incomplete_type_bonus.cpp:8:30: note: in instantiation of member function 'smart_ptr::linked_ptr<C>::linked_ptr' requested here smart_ptr::linked_ptr<C> p1; ^ /mnt/src/comp_incomplete_type_bonus.cpp:3:8: note: forward declaration of 'C' struct C; ^ In file included from /mnt/src/comp_incomplete_type_bonus.cpp:1: /mnt/src/linked_ptr.hpp:77:46: warning: deleting pointer to incomplete type 'C' may cause undefined behavior [-Wdelete-incomplete] p_(lp.get()), destroyer_([&]() { delete static_cast<decltype(p_)>(p_); }) ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /mnt/src/comp_incomplete_type_bonus.cpp:9:30: note: in instantiation of member function 'smart_ptr::linked_ptr<C>::linked_ptr' requested here smart_ptr::linked_ptr<C> p2(p1); ^ /mnt/src/comp_incomplete_type_bonus.cpp:3:8: note: forward declaration of 'C' struct C; ^ 2 warnings generated.
Исправьте, пожалуйста, в ближайшие 60 часов.
comment:14 Changed 6 years ago by
Tested revision 564 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
FAILURE | ||||
Common header used in some tests: common.h
comment:15 Changed 6 years ago by
Tested revision 565 by basharin.egor.
Main tests
Common header used in some tests: common.h
comment:17 Changed 6 years ago by
Resolution: | → задача сдана |
---|---|
Status: | new → closed |
Решение зачтено. Бонусное задание выполнено.
comment:18 Changed 6 years ago by
Milestone: | ha3-milestone2 → ha3-deadline |
---|
Я плохо посмотрел --- с решением бонусного задания всё ещё есть проблемы.
Например, в explicit linked_ptr(const linked_ptr& lp)
вы выставляете делитер вместо копирования из lp
, что некорректно (т.к. тип T
в данном месте может быть неполным).
Касательно структуры программы: решение можно было бы упростить, если больше переиспользовать существующие методы.
Например, reset()
можно было бы реализовать через конструктор и swap.
Аналогично operator=
.
Исправьте, пожалуйста.
Требование 4 и доп задание доделаны.