Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#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 basharin.egor

Требование 4 и доп задание доделаны.

comment:2 Changed 6 years ago by cpptester

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

Tested revision 246 by basharin.egor.

Smoke tests

test

stage

result

info

log

run_linked_ptr_gen_smoke_test.cpp

gcc62

WARNING

run_linked_ptr_gen_smoke_test-gcc62.log

run

SUCCESS

valgrind

SUCCESS

run_linked_ptr_gen_smoke_test-valgrind.log

gcc62-asan

WARNING

run_linked_ptr_gen_smoke_test-gcc62-asan.log

asan

SUCCESS

clang-san

WARNING

run_linked_ptr_gen_smoke_test-clang-san.log

san

SUCCESS

run_smoke_test.cpp

gcc62

WARNING

run_smoke_test-gcc62.log

run

SUCCESS

valgrind

SUCCESS

run_smoke_test-valgrind.log

gcc62-asan

WARNING

run_smoke_test-gcc62-asan.log

asan

SUCCESS

clang-san

WARNING

run_smoke_test-clang-san.log

san

SUCCESS

Common header used in some tests: common.h

comment:3 Changed 6 years ago by basharin.egor

Файлы с логами не открываются. Сервер недоступен.

comment:4 Changed 6 years ago by Vladimir Rutsky

Егор, сервер с тестами сейчас работает, пожалуйста, исправьте замечания из автотестов.

comment:9 Changed 6 years ago by cpptester

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

run_op1.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_op1-valgrind.log

SUCCESS
FAILURE

exit code 1

run_op1-asan.log

SUCCESS
FAILURE

exit code 1

run_op1-san.log

run_single_object_multiple_ptrs.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs-valgrind.log

SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs-asan.log

SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs-san.log

run_single_object_multiple_ptrs2.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs2-valgrind.log

SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs2-asan.log

SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs2-san.log

run_swap_adjacent1.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_swap_adjacent1-valgrind.log

SUCCESS
FAILURE

exit code 1

run_swap_adjacent1-asan.log

SUCCESS
FAILURE

exit code 1

run_swap_adjacent1-san.log

run_swap_two_diff2.cpp

SUCCESS
FAILURE

exit code 139

run_swap_two_diff2-run.log

run_test.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_test-valgrind.log

SUCCESS
FAILURE

exit code 1

run_test-asan.log

SUCCESS
FAILURE

exit code 1

run_test-san.log

Common header used in some tests: common.h

comment:10 Changed 6 years ago by cpptester

Tested revision 508 by basharin.egor.

Main tests

test

stage

result

info

log

run_reset_linked.cpp

SUCCESS
FAILURE

exit code 139

run_reset_linked-run.log

run_single_object_multiple_ptrs.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs-valgrind.log

SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs-asan.log

SUCCESS
FAILURE

exit code 1

run_single_object_multiple_ptrs-san.log

run_test.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_test-valgrind.log

SUCCESS
FAILURE

exit code 1

run_test-asan.log

SUCCESS
FAILURE

exit code 1

run_test-san.log

run_test2.cpp

SUCCESS
SUCCESS
FAILURE

exit code 1

run_test2-valgrind.log

SUCCESS
FAILURE

exit code 1

run_test2-asan.log

SUCCESS
FAILURE

exit code 1

run_test2-san.log

Common header used in some tests: common.h

comment:11 Changed 6 years ago by cpptester

Tested revision 510 by basharin.egor.

All tests passed. Good job!

comment:12 Changed 6 years ago by cpptester

Tested revision 530 by basharin.egor.

All tests passed. Good job!

comment:13 Changed 6 years ago by Vladimir Rutsky

Milestone: ha3-milestone1ha3-milestone2

Замечания:

  1. Не используйте виртуальные методы. В данном случае базовый класс это приватная деталь реализации, и никто не должен хранить linked_ptr по указателю на базовый класс, и виртуальный деструктор здесь не нужен.
  1. Можете упростить выражение delete static_cast<decltype(p_)>(p_)?
  1. Сейчас в делитере вы храните указатель на удаляемое значение, а в linked_ptr храните делитер. Таким образом вы дважды храните указатель на удаляемое значение.
  1. Вы создаёте делитер от неполного типа в следующем тесте, что является ошибкой:
#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:16 Changed 6 years ago by cpptester

Tested revision 566 by basharin.egor.

All tests passed. Good job!

comment:17 Changed 6 years ago by Vladimir Rutsky

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

Решение зачтено. Бонусное задание выполнено.

comment:18 Changed 6 years ago by Vladimir Rutsky

Milestone: ha3-milestone2ha3-deadline

Я плохо посмотрел --- с решением бонусного задания всё ещё есть проблемы.

Например, в explicit linked_ptr(const linked_ptr& lp) вы выставляете делитер вместо копирования из lp, что некорректно (т.к. тип T в данном месте может быть неполным).

Касательно структуры программы: решение можно было бы упростить, если больше переиспользовать существующие методы.
Например, reset() можно было бы реализовать через конструктор и swap.
Аналогично operator=.

Исправьте, пожалуйста.

comment:19 Changed 6 years ago by cpptester

Tested revision 567 by basharin.egor.

All tests passed. Good job!

comment:20 Changed 6 years ago by Vladimir Rutsky

Решение зачтено. Бонусное задание зачтено.

Note: See TracTickets for help on using tickets.