On Wed, 2016-05-04 at 21:41 +0100, Arnt Gulbrandsen wrote:

> Malloc() is very simple: You ask for memory and get it. The negative
> side 
> of that simplicity is that if you're out of memory (and that happens 
> occasionally if a server is run close to capacity) then processes die
> and/or become unresponsive. Such is the tyranny of the Poisson 
> distribution.

Not a problem at all.  An API is a contract, violate it at your peril.
The malloc() call's contract is you request memory with the
understanding that "no" is a legal answer.  If you fail to account for
that possibility (tactics like preallocation) you either made a mistake
or worse, failed to understand the nature of the deal.  On the other
hand, a tactic of simply allowing the process that hits the memory
limit to die, thus freeing up some memory, might be the winning move.
If you can't accept that, program in a language which deals with those
sort of low level details for you and accept the solution it chooses
when a request for memory fails.  C isn't for everyone and isn't the
best answer to every problem.

After all, wrapping malloc in a simple test for NULL and exit beats
just assuming any malloc will succeed.

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to