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)
}
else if (size == 0){
free(ptr);
return null;
}
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 2
, 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:
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
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 3
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)
}
else if (size == 0){
free(ptr);
return null;
}
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 2
, 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:
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
@COPYRIGHT 2026/2027 ALLRIGHTS RESERVED 3