Home »

What is the heap?

Question ListCategory: cWhat is the heap?
jamessmith05 author asked 9 years ago
1 Answers
milleranthony7 author answered 8 years ago

The heap is where malloc(), calloc(), and realloc() get memory.
Getting memory from the heap is much slower than getting it from the stack. On the other

hand, the heap is much more flexible than the stack. Memory can be allocated at any time

and deallocated in any order. Such memory isn’t deallocated automatically; you have to call

free().

Recursive data structures are almost always implemented with memory from the heap.

Strings often come from there too, especially strings that could be very long at runtime. If you

can keep data in a local variable (and allocate it from the stack), your code will run faster

than if you put the data on the heap. Sometimes you can use a better algorithm if you use

the heap faster, or more robust, or more flexible. It’s a tradeoff.

If memory is allocated from the heap, it’s available until the program ends. That’s great if you

remember to deallocate it when you’re done. If you forget, it’s a problem. A memory leak is

some allocated memory that’s no longer needed but isn’t deallocated. If you have a memory

leak inside a loop, you can use up all the memory on the heap and not be able to get any

more. (When that happens, the allocation functions return a null pointer.) In some

environments, if a program doesn’t deallocate everything it allocated, memory stays

unavailable even after the program ends.

Please login or Register to Submit Answer