Heap-based memory allocation