Skip to main content
GameDev.net gamedev.net
🔒 Locked

Dynamic memory and forced process closing

Started by najmuddin Dec 5, 2012 at 1:05 AM 4 replies 1.3k views
Original Post
najmuddin
najmuddin
Greetings!

I would like to ask you what does happen whith the variables on the dynamic memory (created with new) if you force the closing of the process, before the call of the delete instruction?... Are destroyers called anyway?... What are the consequences of that?

Thank you... (And sorry, I'm bad speaking english)
Bacterius
Bacterius
Destructors are not called, no, but since dynamic memory is managed by the OS, when your process dies, the operating system cleans everything up for you anyway (and same for most resources like file descriptors, sockets, etc..). That doesn't mean you should not care to free your memory before ending your program, you should always do it, because if you need to save your program's state to disk somehow, you'll have to make sure it's done because the operating system won't do that for you, but it does mean you need not worry about memory getting lost when your process is killed.

Actually, it depends what you mean by "forcing" the process to close. There's a big difference between an API like TerminateProcess() and ExitProcess() under Windows, for instance.
“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”
Khatharr
Khatharr
Does TerminateProcess() not release the pages of the target process?
void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.
Bacterius
Bacterius

Does TerminateProcess() not release the pages of the target process?

No, all virtual memory is released when the process is terminated (though the process may take a while to terminate as I/O is difficult to interrupt, at least under Windows). However the program (or attached libraries) may need to do special cleanup work which TerminateProcess() won't let them do, unlike ExitProcess().
“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”
Khatharr
Khatharr
Ah, gotcha.
void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.
najmuddin
najmuddin
Thank you. I was thi.king that dynamic memory was not enough safe because of that.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.