How to manage memory in C++?
In C++, memory management is primarily done through the following methods:
New/delete operators are used for dynamically allocating and freeing memory. The new operator is used to allocate memory and return a pointer to that memory, while the delete operator is used to release dynamically allocated memory.
int* ptr = new int; // 分配int类型的内存
*ptr = 10; // 写入值
delete ptr; // 释放内存
2. In C++, you can also use the malloc and free functions from the C standard library for memory allocation and deallocation, but it is important to note that memory allocated using malloc needs to be released using free.
int* ptr = (int*)malloc(sizeof(int)); // 分配int类型的内存
*ptr = 10; // 写入值
free(ptr); // 释放内存
Option: Smart pointers were introduced in C++11, with the most commonly used being std::shared_ptr and std::unique_ptr. Smart pointers can automatically manage memory, prevent memory leaks, and release memory automatically when the scope ends.
std::shared_ptr<int> ptr = std::make_shared<int>(10); // 分配int类型的内存
4. RAII(Resource Acquisition Is Initialization): RAII is a programming technique where resources are acquired during object construction and released during object destruction to ensure proper resource management, avoiding memory leaks caused by forgetting to release resources.
class Resource {
int* ptr;
public:
Resource() : ptr(new int) {}
~Resource() { delete ptr; }
};
The above are common memory management techniques in C++. Choose the appropriate method for managing memory in your project to ensure the correctness of memory allocation and deallocation.