在C++中,內存管理主要涉及到兩個方面:堆內存和棧內存。堆內存主要用于動態分配內存,而棧內存主要用于存儲局部變量和函數調用所需的內存。
示例:
void myFunction() {
int localVar = 42; // 棧內存分配
}
new
關鍵字動態分配內存。當不再需要這塊內存時,應使用delete
關鍵字釋放內存,以避免內存泄漏。為了避免忘記釋放內存,可以使用智能指針(如std::unique_ptr
和std::shared_ptr
)來自動管理堆內存。示例:
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass 構造函數被調用" << std::endl; }
~MyClass() { std::cout << "MyClass 析構函數被調用" << std::endl; }
};
void createMyClassObject() {
// 使用new關鍵字動態分配內存
std::unique_ptr<MyClass> myObject = std::make_unique<MyClass>();
} // 當myObject離開作用域時,析構函數會被自動調用,釋放內存
int main() {
createMyClassObject();
return 0;
}
總結:在C++中,棧內存由編譯器自動管理,而堆內存需要程序員手動管理。為了避免內存泄漏和其他問題,建議使用智能指針來自動管理堆內存。