@ProCxx

Страница 2354 из 2477
$continue$
17.09.2018
17:35:47
я смог получить выход похожий на protobuf файл, но я не уверен, что это оно. Завтра, только проверить смогу...

Вот, интересно, может кто нибудь тут делал уже такое

Ilia
17.09.2018
17:37:33
мышкой я неосилил чет, там бывало потом какой-нибудь лэйаут отказывался перетаскиваться по какой-то магической причине.
Потому что надо сначала лэйаут родителя сломать (удалить), потом таскать, потом можно новый лэйаут задать

А stderr?
С чего он небуферизированный ?

Google
Matwey
17.09.2018
17:50:22
С чего он небуферизированный ?
ну там чо-то в POSIX какие-то гарантии были. или не было?

Крис
17.09.2018
18:22:36
С чего он небуферизированный ?
The stream stderr is unbuffered. The stream stdout is line-buffered when it points to a terminal.

Alexander
17.09.2018
18:37:57
могут вот здесь - @supapro

max
17.09.2018
18:38:16
Firstname
17.09.2018
19:10:08
Такс, профессионалы

под маком у valgrind много траблов?

Alexander
17.09.2018
19:30:14
@Artalus

Vladislav
17.09.2018
19:32:29
под маком у valgrind много траблов?
А он точно нужен? Шланговые санитайзеры уже многое умеют лучше него

Аттрибутивно-ассоциативный ряд
17.09.2018
19:32:54
Vladislav
17.09.2018
19:33:44
Многое != все)

А так, быстрый heap profile есть в jemalloc, massif я лично не пробовал

Alexander
17.09.2018
19:35:02
btw, в openbsd можно маллок системный подменить, чтобы находить всякие проблемы с памятью

недавно на линуксовке узнал

Google
Konstantin
17.09.2018
19:35:31
под маком не было траблов с valgrind, нормально работал

Firstname
17.09.2018
19:36:05
Щя продублирую сюда

Vladislav
17.09.2018
19:36:30
Аттрибутивно-ассоциативный ряд
17.09.2018
19:37:04
Кто-нибудь пробовал memoro?

Vladislav
17.09.2018
19:37:40
Firstname
17.09.2018
19:38:23
Смотрите, если кратко то волгринд агриться на то, что память создаваемая в insertAll не освобождается

https://github.com/Worsell/SomeSimpleProjects/tree/SimpleBinaryTree

bool insertAll(iter begin, iter end) { //std::sort(begin, end, std::less<T>()); auto *tmp = new SimpleSearchTree<T>(); int b = 100; for (auto i = begin; i != end; i++) { tmp->insert(*i); if ((tmp->size != 0) && (tmp->size % b == 0)) { if (root == nullptr) { root = tmp->root; } else { Node<T> *const node = getParent(tmp->root->getElement(), root); if (node->getElement() > tmp->root->getElement()) { node->setLeft(tmp->root); tmp->root->setParent(node); } else { node->setRight(tmp->root); tmp->root->setParent(node); } } size += (tmp->size); tmp = new SimpleSearchTree<T>(); } } if (root == nullptr) { root = tmp->root; } else { if (tmp->size != 0) { Node<T> *const node = getParent(tmp->root->getElement(), root); if (node->getElement() > tmp->root->getElement()) { node->setLeft(tmp->root); tmp->root->setParent(node); } else { node->setRight(tmp->root); tmp->root->setParent(node); } } } size += (tmp->size); return true; }

я тупо создаю древо, и подвешиваю его к уже существующему

scr/SimpleTree.h

leak definitly lost

модель удаления древа - рекурсивная

у нас гарантируется, что при удалении корня, все что ниже очиститься из памяти корректно

virtual ~Node() { delete left; delete right; right = nullptr; parent = nullptr; left = nullptr; }

деструктор ноды все делает

В чате для нубов обсудили

все свелось к тому, что надо лопатить код может есть какие нибудь более здравые предложения?

потому что код простой и тут тупо не может быть утечек

Google
Vladislav
17.09.2018
19:42:37
bonus: пока перелопатишь, поймешь где была утечка)

Firstname
17.09.2018
19:43:23
ну умные указатели там просто все переписать будет

я думаю так и поступлю

Vladislav
17.09.2018
19:46:51
ну умные указатели там просто все переписать будет
не так уж и много, на самом деле - заменить сырые указатели, new на make_unique, убрать ручные деструкторы да расставить std::move по вкусу

Firstname
17.09.2018
19:47:03
ну я про это же

там чисто сахар переписать

Vladislav
17.09.2018
19:47:26
в реализации BST это строк 20-30 поменять, на вскидку

Firstname
17.09.2018
19:48:50
ну у меня не больше

вы лучше скажите, почему оно агриться:(((((

/dev
17.09.2018
20:16:20
Stolyarchuk
18.09.2018
00:45:58
delete tmp

virtual ~Node() { delete left; delete right; right = nullptr; parent = nullptr; left = nullptr; }
в какой институт поступить, чтобы такому научиться?

Stolyarchuk
18.09.2018
00:52:24
зачм нуллить указатель на уже удалённый объект?

Stanislav
18.09.2018
00:56:42
вот проверку на нул делать не надо, это да

зачм нуллить указатель на уже удалённый объект?
а если случайно второй раз его делетнуть будет еще веселей

Ilia
18.09.2018
01:01:10
зачм нуллить указатель на уже удалённый объект?
На самом деле конечно это не нужно если два раза и более delete не вызываешь. Но для отладки бывает весьма полезно. Ещё полезнее правда умные указатели использовать...

Vladislav
18.09.2018
01:01:55
зачм нуллить указатель на уже удалённый объект?
первое правило кастоменых делитеров - не писать кастомные делитеры

Google
Ilia
18.09.2018
01:03:08
В отладчике.

Stolyarchuk
18.09.2018
01:03:10
двойная аллокация памяти (пох что по 8 байт всего) это сильно...

Stanislav
18.09.2018
01:03:33
Stolyarchuk
18.09.2018
01:03:34
в деструкторе всмысле

Vladislav
18.09.2018
01:04:38
аллокация памяти в деструкторе? o_O

Stanislav
18.09.2018
01:05:10
аллокация памяти в деструкторе? o_O
а шо, не плохо, убить себя сразу

Ilia
18.09.2018
01:07:21
Ну, может человеку надо, а исключения он перехватывает все...

Stolyarchuk
18.09.2018
01:19:43
ну надо, так надо.. непонятно просто зачем

Viacheslav
18.09.2018
07:14:43
TEST(SimpleSearchTree, SimpleAddAll) {     auto *test = new std::vector<int>();     auto *const trees = new ::myLibrary::SimpleSearchTree<int>();     test->reserve(5); Весёлые тесты, однако. Извращение какое-то, всё на куче выделять.

for (std::__1::__tree_const_iterator<int, std::__1::__tree_node<int, void *> *, long>::value_type i: *test) {         ASSERT_EQ(true, trees->contains(i)); А это вообще супер ?

Евгений
18.09.2018
07:20:36
auto для неудачников?
Для заставших C++11, тут мб легаси доисторического периода? Иначе хз что за мазохизм

Firstname
18.09.2018
07:21:18
О да

До моего кода добрались ???

Google
Viacheslav
18.09.2018
07:22:26
Да бес с ним, с auto. Мне интересно, сколько времени человек потратил, чтобы этот внутренний тип выкопать, и не лень ведь было.

Страница 2354 из 2477