malloc(), virtual memory

Chris Torek chris%umcp-cs.uucp at BRL.ARPA
Mon Sep 9 06:55:26 AEST 1985


> From: jon at cit-vax (Jonathan P. Leech)

>> From: Chris Torek
>> ... Since as distributed 4.2 has a per-process VM limit of 6M, you
>> cannot allocate more than 4M with malloc.

> I don't understand how this works. Suppose I allocate two blocks,
> one 4M (2^22 bytes) and one 2M (2^21). These are both powers of
> two, and I get 6M total.  Or does malloc round it up by a factor
> of two if you are unlucky enough to request a power of two . . . .

Sorry, I was not specific enough.  You can allocate one 4M chunk
and one 2M chunk; you cannot allocate one 6M chunk.

The size you hand to malloc has (in our C library at any rate) 4
added to it, then the result is brought up to the nearest power of
two.  So if you give it ((1 << 22) - 4) you will get a 4M chunk;
one more byte and malloc will require an 8M chunk.  (If you compile
malloc with range checking the overhead grows to 12 bytes.)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251)
UUCP:	seismo!umcp-cs!chris
CSNet:	chris at umcp-cs		ARPA:	chris at maryland



More information about the Comp.lang.c mailing list