Memory Management in C++
Memory management in C++ is a critical concept that allows efficient utilization of
memory by dynamically allocating and deallocating memory during program
execution. C++ provides tools to manage memory manually, giving the
programmer precise control over how memory is used.
1. Types of Memory in C++
1. Static Memory:
o Allocated at compile time.
o Includes global and static variables.
o Exists throughout the program's lifetime.
2. Stack Memory:
o Allocated for local variables and function calls.
o Automatically managed by the compiler.
o Deallocated when the function exits.
3. Heap Memory:
o Allocated dynamically during runtime.
o Requires manual management (allocation and deallocation).
o Useful for managing large data or structures that need to persist
beyond function calls.
2. Dynamic Memory Allocation
2.1 Using new Operator
Allocates memory dynamically on the heap and returns a pointer to the allocated
memory.
Syntax:
data_type *pointer = new data_type;
Example:
, int *p = new int; // Allocates memory for an integer
*p = 42;
cout << *p; // Output: 42
2.2 Using delete Operator
Deallocates memory allocated using new. Failing to deallocate memory can lead
to memory leaks.
Syntax:
delete pointer;
Example:
delete p; // Deallocates the memory
2.3 Dynamic Arrays
Dynamic arrays can be created using new and deallocated using delete[].
Example:
int *arr = new int[5]; // Allocates memory for an array of 5 integers
for (int i = 0; i < 5; i++) {
arr[i] = i * 2;
}
delete[] arr; // Deallocates the memory for the array
3. Smart Pointers
Smart pointers manage memory automatically and prevent memory leaks by
ensuring proper deallocation. Introduced in C++11, they simplify memory
management.
3.1 Unique Pointer (std::unique_ptr)
Owns a resource and ensures it is deallocated when the pointer goes out of
scope.
Memory management in C++ is a critical concept that allows efficient utilization of
memory by dynamically allocating and deallocating memory during program
execution. C++ provides tools to manage memory manually, giving the
programmer precise control over how memory is used.
1. Types of Memory in C++
1. Static Memory:
o Allocated at compile time.
o Includes global and static variables.
o Exists throughout the program's lifetime.
2. Stack Memory:
o Allocated for local variables and function calls.
o Automatically managed by the compiler.
o Deallocated when the function exits.
3. Heap Memory:
o Allocated dynamically during runtime.
o Requires manual management (allocation and deallocation).
o Useful for managing large data or structures that need to persist
beyond function calls.
2. Dynamic Memory Allocation
2.1 Using new Operator
Allocates memory dynamically on the heap and returns a pointer to the allocated
memory.
Syntax:
data_type *pointer = new data_type;
Example:
, int *p = new int; // Allocates memory for an integer
*p = 42;
cout << *p; // Output: 42
2.2 Using delete Operator
Deallocates memory allocated using new. Failing to deallocate memory can lead
to memory leaks.
Syntax:
delete pointer;
Example:
delete p; // Deallocates the memory
2.3 Dynamic Arrays
Dynamic arrays can be created using new and deallocated using delete[].
Example:
int *arr = new int[5]; // Allocates memory for an array of 5 integers
for (int i = 0; i < 5; i++) {
arr[i] = i * 2;
}
delete[] arr; // Deallocates the memory for the array
3. Smart Pointers
Smart pointers manage memory automatically and prevent memory leaks by
ensuring proper deallocation. Introduced in C++11, they simplify memory
management.
3.1 Unique Pointer (std::unique_ptr)
Owns a resource and ensures it is deallocated when the pointer goes out of
scope.