例如,像容器之类的容器std::vector<T*>销毁了所有由其添加的元素push_back(new T)。不会std::pair<T1*, T2*>做同样的,当你初始化它像{ new T1, new T }?
我有这个问题,因为这std::pair是一种与类容器不同的结构(它仍然没有任何意义)。我找不到有关它的任何信息。
编辑:尽管我认为容器是delete它们动态分配的元素,但这是错误的。
eer*_*ika 10
向量和配对均会破坏其元素。
向量和对都不破坏或取消分配其元素所指向的对象。
一些例子:
{
std::vector<int> v {42};
}
Run Code Online (Sandbox Code Playgroud)
向量是动态分配的,并已释放。
{
std::vector<int*> v {new int};
}
Run Code Online (Sandbox Code Playgroud)
向量是动态分配的,并已释放。我动态分配,并且泄漏了分配。
{
std::pair<int, int> v {42, 24};
}
Run Code Online (Sandbox Code Playgroud)
没有任何动态分配。大。
{
std::pair<int*, int*> v {new int, new int};
}
Run Code Online (Sandbox Code Playgroud)
我动态分配了两次,两次都泄漏了。
{
std::pair<int*, int*> v {new int, new int};
delete v.first;
delete v.second;
}
Run Code Online (Sandbox Code Playgroud)
没有泄漏...。但是不要这样做。避免不必要的动态分配,并且不要使用拥有的裸指针。
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |