CS354 EXAM 2 REVIEW QUESTIONS
AND ANSWERS GRADED A+ 2026
Heap definition - ANS a segment of a processes virtual address space used for dynamically
allocated memory
when is dynamically mem allocated? - ANS at runtime
dynamically allocated memory definition - ANS a collection of various sized mem blocks that
are managed by an allocator
block definition - ANS a continuous chunk of memory containing a payload and overhead
payload definition - ANS part of the block usable by the program requesting heap memory
overhead definition - ANS part of the block used by the allocator to manage the heaps
internal structure.
allocator - ANS code that allocs and frees heap blocks (as well as splits and merges them)
How allocator works: Java - ANS garbage collector, 'new' implicitly determines bytes needed
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 1
,How allocators work: C - ANS malloc must be told how many bytes needed
free must explicitly be called
name of C's heap allocator - ANS stdlib.h
contains a collection of commonly used C functions
C's heap allocator has functions (4) - ANS malloc, calloc, realloc, and free
malloc function
void *malloc (size_t size) - ANS allocates and returns generic ptr to block of heap memory of
size bytes, or returns null is allocation fails
calloc function
void * calloc(size_t nItems, size_t size) - ANS allocates, clears to 0, returns a block of heap
memory of nItems * size bytes, or returns null upon failure
realloc function
void * realloc(void *ptr, size_t size) - ANS reallocates to size bytes a previously allocd block of
heap memory pointed to by ptr, or returns null if realloc fails
realloc example
realloc to size bytes a previously alloc'd block of heap mem pointed to by ptr, or return null if
failure occurs. - ANS if(ptr == null){
return malloc(size)
}
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 2
,else if (size == 0){
free(ptr);
return null;
}
else // attempts to reallloc
see l8-4
posix definition - ANS portable os interface
standard for maintaining compatibility among unix operating systems
what is unistd.h? - ANS has functions to access posix API
brk definition - ANS program break
end point of program in VAS
brk usage
int brk(void *addr) - ANS int brk(void *addr)
sets top of heap to the specified address addr
returns 0 if successful, else returns -1 and sets errno
errno definition - ANS error number
set by OS function call (brk or sbrk)
Allocator design:
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 3
, goals: throughput - ANS measure operations/second (how many mallocs you can do per
second)
higher throughput is better, more operations per second is better
Allocator design:
goals: memory utilization - ANS taking memory requested and divide it among the heap
that's been allocated
higher is better
tradeoff in allocator design - ANS increasing throughput decreases memory utilization and
vice versa
List of requirements of a heap allocator - ANS 1) must handle arbitrary sequence of requests
2) provide an immediate response
3) Doesn't move or change alloc'd blocks
4) Allocs should use the heap, keep on heap memory segment
5) Follow alignment requirements of system
Design Considerations for Allocator - ANS -Free block organization
-placement policy
-splitting free blocks to create a better fit
-coalescing free blocks to create larger free blocks
double word alignment - ANS block size must be a multiple of 8
payload address must be a multiple of 8
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 4
AND ANSWERS GRADED A+ 2026
Heap definition - ANS a segment of a processes virtual address space used for dynamically
allocated memory
when is dynamically mem allocated? - ANS at runtime
dynamically allocated memory definition - ANS a collection of various sized mem blocks that
are managed by an allocator
block definition - ANS a continuous chunk of memory containing a payload and overhead
payload definition - ANS part of the block usable by the program requesting heap memory
overhead definition - ANS part of the block used by the allocator to manage the heaps
internal structure.
allocator - ANS code that allocs and frees heap blocks (as well as splits and merges them)
How allocator works: Java - ANS garbage collector, 'new' implicitly determines bytes needed
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 1
,How allocators work: C - ANS malloc must be told how many bytes needed
free must explicitly be called
name of C's heap allocator - ANS stdlib.h
contains a collection of commonly used C functions
C's heap allocator has functions (4) - ANS malloc, calloc, realloc, and free
malloc function
void *malloc (size_t size) - ANS allocates and returns generic ptr to block of heap memory of
size bytes, or returns null is allocation fails
calloc function
void * calloc(size_t nItems, size_t size) - ANS allocates, clears to 0, returns a block of heap
memory of nItems * size bytes, or returns null upon failure
realloc function
void * realloc(void *ptr, size_t size) - ANS reallocates to size bytes a previously allocd block of
heap memory pointed to by ptr, or returns null if realloc fails
realloc example
realloc to size bytes a previously alloc'd block of heap mem pointed to by ptr, or return null if
failure occurs. - ANS if(ptr == null){
return malloc(size)
}
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 2
,else if (size == 0){
free(ptr);
return null;
}
else // attempts to reallloc
see l8-4
posix definition - ANS portable os interface
standard for maintaining compatibility among unix operating systems
what is unistd.h? - ANS has functions to access posix API
brk definition - ANS program break
end point of program in VAS
brk usage
int brk(void *addr) - ANS int brk(void *addr)
sets top of heap to the specified address addr
returns 0 if successful, else returns -1 and sets errno
errno definition - ANS error number
set by OS function call (brk or sbrk)
Allocator design:
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 3
, goals: throughput - ANS measure operations/second (how many mallocs you can do per
second)
higher throughput is better, more operations per second is better
Allocator design:
goals: memory utilization - ANS taking memory requested and divide it among the heap
that's been allocated
higher is better
tradeoff in allocator design - ANS increasing throughput decreases memory utilization and
vice versa
List of requirements of a heap allocator - ANS 1) must handle arbitrary sequence of requests
2) provide an immediate response
3) Doesn't move or change alloc'd blocks
4) Allocs should use the heap, keep on heap memory segment
5) Follow alignment requirements of system
Design Considerations for Allocator - ANS -Free block organization
-placement policy
-splitting free blocks to create a better fit
-coalescing free blocks to create larger free blocks
double word alignment - ANS block size must be a multiple of 8
payload address must be a multiple of 8
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 4