Похожие чаты

Hi there Does deleting the 'instance' on line 24 result in

deleting all data in the 'func' function (including 'output' and also static 'x') ?

20 ответов

34 просмотра

output is the only thing you allocate, so it's the only thing you need to delete from inside func(). BUT this still leaks memory, because the original instance is overwritten when you reassign instance, so that is never deleted

A* instance = new A; delete instance; instance = instance->func(); delete instance;

L21 calls new L11 calls new (called by L22) So 2 calls to delete are required to clean up

To answer your question; no Deleting instance results in output being deleted. int number is basically automatically deleted when the function returns, static int x is never deleted, and never created, there's just one x for the entire lifetime of the program

Sahand-🏔️ Автор вопроса
Thomas
L21 calls new L11 calls new (called by L22) So 2 c...

Yes, technically I need to delete 'output' if I want to deallocate it. But also I need it to return from my function.. actually I will be happy if it gets deleted by deleting the 'instance' variable, so the memory leaks will be avoided ....

Why should deleting the object instance delete all data in func?

Sahand 🏔️
Yes, technically I need to delete 'output' if I wa...

Are you on Linux? I think you should try ltrace

Sahand-🏔️ Автор вопроса
Azadi
Why should deleting the object instance delete all...

I thought deleting instance result in deleting on-heap-allocated data too .. that's my guess

Sahand 🏔️
I thought deleting instance result in deleting on-...

It does, but variables in functions are not on-heap

Sahand-🏔️ Автор вопроса
Sahand-🏔️ Автор вопроса
Thomas
output is the only thing you allocate, so it's the...

What do you mean by "when you reassign instance" ? Like what I did on line 22 here ? https://t.me/thedevs_c/246528

Sahand 🏔️
I thought deleting instance result in deleting on-...

delete will free the memory allocated by new. So in this case yes. As for the static variable,it remains until your program terminates.

Sahand-🏔️ Автор вопроса
Thomas
output is the only thing you allocate, so it's the...

Here you said "that is never deleted" but here https://t.me/thedevs_c/246534 you also said deleting instance results in deleting output... So .. ? I'm a bit confused 😬 Will output be deleted by deleting instance?

// this is never deleted A *instance = new A; A *output = new A; instance = output; // output is deleted delete instance;

Thomas
// this is never deleted A *instance = new A; A *...

instance = output; overwrites the original address of instance, and then the original can never be deleted, because you lost the address to it

Sahand-🏔️ Автор вопроса
Thomas
instance = output; overwrites the original address...

Oh now I understand A* instance = new A; A* ptr = instance; instance = instance->func(); /* some code */ // GC delete instance; instance = ptr; delete instance; This one also works right ?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Карта сайта