Jump to content

  • Log In with Google      Sign In   
  • Create Account

Dynamic memory and forced process closing


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 najmuddin   Members   -  Reputation: 181

Like
0Likes
Like

Posted 04 December 2012 - 07:05 PM

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)

Sponsor:

#2 Bacterius   Crossbones+   -  Reputation: 9282

Like
1Likes
Like

Posted 04 December 2012 - 07:42 PM

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.

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#3 Khatharr   Crossbones+   -  Reputation: 3040

Like
0Likes
Like

Posted 04 December 2012 - 08:35 PM

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.

#4 Bacterius   Crossbones+   -  Reputation: 9282

Like
0Likes
Like

Posted 04 December 2012 - 08:40 PM

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().

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#5 Khatharr   Crossbones+   -  Reputation: 3040

Like
0Likes
Like

Posted 05 December 2012 - 04:41 PM

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.

#6 najmuddin   Members   -  Reputation: 181

Like
0Likes
Like

Posted 05 December 2012 - 06:01 PM

Thank you. I was thi.king that dynamic memory was not enough safe because of that.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS