[C++] 深度剖析C_C++内存管理机制
#include <iostream>
#include <vector>
class MyClass {
public:
MyClass() { std::cout << "MyClass 对象被创建" << std::endl; }
~MyClass() { std::cout << "MyClass 对象被销毁" << std::endl; }
};
int main() {
std::cout << "在主函数外分配内存" << std::endl;
MyClass* myObjectPtr = new MyClass(); // 在堆上动态分配内存
std::vector<MyClass*> myObjects;
myObjects.push_back(new MyClass()); // 在vector中动态分配内存
std::cout << "在主函数内分配内存" << std::endl;
MyClass stackObject; // 在栈上分配内存
std::cout << "清理内存..." << std::endl;
delete myObjectPtr; // 清理堆上分配的内存
for (auto it = myObjects.begin(); it != myObjects.end(); ++it) {
delete *it; // 清理vector中动态分配的内存
}
myObjects.clear();
std::cout << "程序结束,所有内存都已释放" << std::endl;
return 0;
}
这段代码展示了如何在C++中创建和释放内存,包括在堆上和栈上。它还演示了如何使用std::vector
来管理一组动态分配的对象,并在程序结束时正确地清理它们。这是一个基本的内存管理示例,对于学习C++的初学者有很好的教育价值。
评论已关闭