
Firstname
19.09.2018
17:32:32
волгринд почему то ругается на функцию insertAll

Alex Фэils?︙
19.09.2018
17:32:32

Firstname
19.09.2018
17:32:36
типа там утечка

Alex Фэils?︙
19.09.2018
17:32:51
пожалуйста, не пиши такие короткие сообщения, старайся выразить мысль в одном сообщении

Google

Anton
19.09.2018
17:33:23

Firstname
19.09.2018
17:33:37
там древо присойденяется к текущему
Копирования вроде нет

Max
19.09.2018
17:34:31

Anton
19.09.2018
17:34:35
new есть delete надо
если smart pointer-ов нет, но я не вижу чот

Firstname
19.09.2018
17:36:06

Max
19.09.2018
17:36:15

Anton
19.09.2018
17:36:44

Max
19.09.2018
17:37:06
там, где зачем-то создаются куча новых деревьев в цикле, и ни одно из них не удаляется.

Firstname
19.09.2018
17:37:30
Ну смотрите, в insertAll я выделяю память для поддрева
это поддрево прицепляю к тому, из которого вызывается insertAll

Max
19.09.2018
17:37:32
создаются через new, причём. Хотя и "переписал на смартпоинтерах".

Simon
19.09.2018
17:37:50
А почему это не в супапро?

Google

Anton
19.09.2018
17:38:01

Max
19.09.2018
17:38:46

Anton
19.09.2018
17:40:06
там по узлам копирование идёт вроде

/dev
19.09.2018
17:40:24

Anton
19.09.2018
17:40:37
а, нет, не по узлам ))

Dima
19.09.2018
17:40:38
void *$(){[&](...){$:[](){({$:;_:[](){},""[+-(&&$<&&_)];});}();}([=](){});}
Хм

Simon
19.09.2018
17:41:13

Max
19.09.2018
17:41:23

Firstname
19.09.2018
17:41:25
блин вы можете сказать зачем delete
вот у меня есть древо занимающую определенную память
Я вызываю функцию insertAll задача которой скоприровать элементы принимаемые по итератору они принимаются отсортированно
для этого я создаю "пачками" деревья выделяя память new потом корень древа присойденяю к текущему в нужное место

Anton
19.09.2018
17:41:48
для тех поддеревьев, которые были созданы new

Max
19.09.2018
17:42:20
но, лучше перепиши на смартпоинтеры ещё раз. С первого - не срослось.

Firstname
19.09.2018
17:42:55

Anton
19.09.2018
17:43:11
надо те же адреса передавать, которые возвращал new

/dev
19.09.2018
17:43:23

Firstname
19.09.2018
17:43:24
обход в глубину ж

Max
19.09.2018
17:44:10

Google

Simon
19.09.2018
17:44:50

Firstname
19.09.2018
17:46:19
в общем я разобрался
там тупо на самом деле
очень

Max
19.09.2018
17:47:06
и не надо.

Firstname
19.09.2018
17:47:16
Node()

Max
19.09.2018
17:47:48
юзай смартпоинтеры.

Firstname
19.09.2018
17:48:39
какой то подозрительный класс
))

Max
19.09.2018
17:50:01
а в insertAll ты создаёшь через new кучу деревьев, и потом их не удаляешь.

Firstname
19.09.2018
17:50:40
обнови
гитхаб
я там протупил и забыл что под указатели память тоже выделяется

Max
19.09.2018
17:51:42

Firstname
19.09.2018
17:51:59
ну посмотри дифф

Max
19.09.2018
17:52:19
утечек больше нет. Смартпоинтеры - крутые. Q.E.D.

Google

Max
19.09.2018
17:54:13
bool insert(T const element) — используй ссылки.
во всех remove и find, соответственно, тоже.
// Ну тут нет утечек, вне зависимости от того, что показывает анализатор
Весьма смелое заявление :)

Firstname
19.09.2018
17:59:25

Max
19.09.2018
18:00:13

Firstname
19.09.2018
18:01:33

Max
19.09.2018
18:02:12

Firstname
19.09.2018
18:02:56
просто обертка над *?

Max
19.09.2018
18:03:20

Firstname
19.09.2018
18:03:47
удаление при обнулении указателя не происходит разве?

Anton
19.09.2018
18:05:06

Max
19.09.2018
18:06:04

Assasin
19.09.2018
18:06:35

Anton
19.09.2018
18:07:40

Assasin
19.09.2018
18:08:26
потом - да, и полагаться на это нельзя. А смартпоинтер в C++ при сбросе уничтожит сразу же

Max
19.09.2018
18:08:45

Firstname
19.09.2018
18:10:35

Google

Firstname
19.09.2018
18:11:10

Max
19.09.2018
18:11:36

Firstname
19.09.2018
18:13:19
ммм может я хреново понимаю, что скорее всего так и есть, но как работает смарт поинтер?
разве при обнулении он не вызывает delete от обьекта?

Assasin
19.09.2018
18:15:33
unique_ptr при вызове reset - да, сразу же и всегда (если объект был). shared_ptr - не всегда, а только когда счетчик ссылок (без учета weak_ptr) станет равен 0

Firstname
19.09.2018
18:18:40
а рест вызвыается когда уникалу присвается ноль или указатель на другой?

Max
19.09.2018
18:21:03
Bulk-loading алгоритм
на вскидку — он у тебя работает неправильно. Ты целиком новое дерево вставляешь между нодами. А нужно их сливать в одно, в зависимости от <> .

Assasin
19.09.2018
18:21:34
но он может принимать параметром другой указатель

Firstname
19.09.2018
18:23:20

Max
19.09.2018
18:23:37

Assasin
19.09.2018
18:23:58

Max
19.09.2018
18:24:25
у тебя не получится бинарного дерева поиска на выходе.

Assasin
19.09.2018
18:24:27
Тут подробнее: https://ru.cppreference.com/w/cpp/memory/unique_ptr/operator%3D

Max
19.09.2018
18:25:08

Firstname
19.09.2018
18:25:08

Assasin
19.09.2018
18:25:26

Firstname
19.09.2018
18:26:48