通过动态内存管理防止自动变量破坏

Hel*_*irr 1 c++ dynamic

根据我的理解,动态内存分配可用于控制对象的生命周期.当我" "一个对象时,它会在堆中保留在内存中,直到我删除它为止.

现在,有时情况并非那么简单.情况就是这种情况,我希望保留一定的内存块,直到我释放它,防止破坏该内存块中的数据.例如,我想将指向堆栈上分配的对象的指针插入到向量中.只要指向对象的指针位于该向量中,指针指向的对象就不会被销毁.这是出于安全原因.如何实现这一点,使用动态内存分配保留一块内存?

888*_*888 6

做你想做的最简单的方法是使用智能指针

您可以使用:

"智能指针是存储指针动态分配(堆)对象的对象,他们的行为类似于除了它们自动删除该对象指向的在适当的时间内建C++指针.智能指针在面对例外的是特别有用它们确保正确销毁动态分配的对象.它们还可用于跟踪多个所有者共享的动态分配对象.

从概念上讲,智能指针被视为拥有指向的对象,因此负责在不再需要时删除对象."

std :: unique_ptr是一个智能指针,它通过指针保留对象的唯一所有权,并在unique_ptr超出范围时销毁该对象.没有两个unique_ptr实例可以管理同一个对象.

std :: shared_ptr是一个智能指针,通过指针保留对象的共享所有权.几个shared_ptr对象可能拥有相同的对象.

  • C++提供了自己的智能指针:参见`std :: unique_ptr`和`std :: shared_ptr`. (3认同)