On 2022-06-14 12:59, Edgar Fuß wrote:
So what should the kernel do?
I don't know how thigs work under the hood today (I might have partially
known in the times of sbrk()), but I would suppose that malloc() will
ultimatively result in some system call enlarging the heap/data
segment/whatever. That system call could simply fail.
I assume my impression is completely wrong (today). But then, how can
a malloc() fail before the process gets killed?
Process limits for one. But I guess if your virtual memory becomes
fragmented, and you request a too big chunk would be another reason.
But malloc today relies on the lazy memory grabbing of the pager. Until
you actually reference the memory, it don't yet have to be backed by
anything. (Unless I remember something wrong.)
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: b...@softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol