Size: a a a

2021 July 08

͏С

͏ СаС in supapro.cxx
если вместо int туда закинуть какой-нибудь свой класс с выводом в деструкторе - он тоже удалится только 1 раз
источник

͏С

͏ СаС in supapro.cxx
я о том, что ее отловить не могу
источник

͏С

͏ СаС in supapro.cxx
в случае с интом в базовом классе и скажем стрингом в наследнике - явно видно увеличение памяти, использующейся процессом
источник

͏С

͏ СаС in supapro.cxx
но в случае с одним типом мембера и в базовом, и в наследнике - выделенная память находится на одном значении, как в случае вызова деструктора класса-наследника
источник

DP

Denis Paukaev in supapro.cxx
всё ещё не понятно)
источник

͏С

͏ СаС in supapro.cxx
имеется в виду, что создание-удаление закинул в бесконечный цикл
источник

DP

Denis Paukaev in supapro.cxx
в твоём конкретном примере утечки нет потому что деструктор B ничего полезного не делает, так что разницы нет был он вызыван или нет
источник

DP

Denis Paukaev in supapro.cxx
выделяй в наследнике память в конструкторе через new, а в деструкторе удаляй через delete
источник

DP

Denis Paukaev in supapro.cxx
сразу увидишь что не всё так радужно
источник

͏С

͏ СаС in supapro.cxx
может неправильно задал вопрос
если пример выше поменять на
struct A {
 int x;
 A(int a) : x(a) {};
};
struct B : A {
 string s;
 B(string b) : A(10), s(b) {};
};

и в мейне в бесконечном цикле
B *b = new B("lorem ipsum");
A *a = b;
delete a;
то в условном диспетчере (имеется в виду любая системная утилила для мониторинга процессов) можно увидеть, как память процесса бесконечно растет
вопрос состоит в том, почему такое же поведение не наблюдается в случае однотипных членов классов? (в базовом и наследнике int)
источник

SS

Sergey Skvortsov in supapro.cxx
placement new не про рантайм и кучу, он у тебя есть
источник

DP

Denis Paukaev in supapro.cxx
потому что строки алоцируют в динамической памяти
источник

K

Kirill in supapro.cxx
не хватает виртуального деструктора
источник

͏С

͏ СаС in supapro.cxx
как раз не надо
я ищу проблему и ее причины-следствия, а не решение)
источник

DP

Denis Paukaev in supapro.cxx
и не читаешь что тебе отвечают видимо
источник

͏С

͏ СаС in supapro.cxx
да нет, этого вполне хватило, спасибо
источник

 P

 ‌‌Gleb Pilipets... in supapro.cxx
у тебя там будут утечки без виртуального деструктора при таком успользовании…
источник

DP

Denis Paukaev in supapro.cxx
https://godbolt.org/z/6zr61161a

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

͏С

͏ СаС in supapro.cxx
мне утечку и надо
источник

 P

 ‌‌Gleb Pilipets... in supapro.cxx
ааа, понял, Норм софт😃
источник