

This tool is used to break up larger sections of code into smaller chunks. The most important commands in gdb are breakpoints, step, next, and variable value printing.īreakpoints pause a program’s execution at a designated time to allow you to evaluate the program status and variable values.

It’s best to still use static allocation for the majority of variables to avoid slowing your program. You’ll quickly find yourself with a memory leak error if you forget to deallocate your memory that can slow or even crash your program!ĭynamic memory’s overhead cost is best used for select variables like scaling data structures. You must instead manually deallocate memory using the free() function. While dynamic memory can scale up to allow for more data, it does not automatically deallocate memory when the amount of data is reduced. This means that Heap data has roughly double the resource cost of Stack data. Variables cached to the Heap must have an associated pointer of equal size to locate the variable later.įor example, a 4-byte variable would also have an associated 4-byte pointer. As a result, retrieving heap data is often less efficient than retrieving Stack data.ĭynamic memory allocation also costs a large overhead. Cached heap data is not adjacent like cached Stack data. Unlike the Stack, Heap memory has no variable size limitation.ĭynamic allocation allocates more memory as it’s needed, meaning that you never have more memory allocated than you need.ĭynamic memory allocation also has performance downsides. Static allocation is used for any global variables, file scope variables, and variables with the static keyword.ĭynamic memory allocation is the more advanced of the two that can shift in size after allocation. Once allocated, static allocation has a fixed size. Static allocation is the more basic of the two and is allocated to the Stack at execution.

In C, there are two types of memory allocation: static and dynamic.
