myVector.erase(myPtr) 是否删除 myPtr 指向的对象?

2024-06-23

如果我有以下代码,

Foo *f = new Foo();
vector<Foo*> vect;
vect.push_back(f);
// do stuff
vect.erase(f);

我是否造成了内存泄漏? 我想是的,但是这个词erase给人一种正在删除的感觉。

写到这里,我想知道将指针放入STL向量中是否是一个错误。你怎么认为?


是的,您由此造成了内存泄漏。 std::vector 和其他容器只会删除指针,它们不会释放指针指向的内存。

将指针放入标准库容器中并不罕见。但问题是,当从容器中删除它时,您必须跟踪删除它的情况。执行上述操作的更好但简单的方法是使用 boost::shared_ptr:

{ 
    boost::shared_ptr<foo> f(new foo);

    std::vector< boost::shared_ptr<foo> > v;
    v.push_back(f);
    v.erase(v.begin());
} /* if the last copy of foo goes out of scope, the memory is automatically freed */

下一个 C++ 标准(通常称为 C++1x 和 C++0x)将包括std::shared_ptr。在那里,您还可以使用std::unique_ptr<T>这更快,因为它不允许复制。使用std::unique_ptrc++0x 中的容器类似于ptr_container图书馆在升压。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

myVector.erase(myPtr) 是否删除 myPtr 指向的对象? 的相关文章

  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • 为什么 ASP.Net MVC Range 属性采用类型?

    我只是想知道为什么范围验证属性可以采用类型和两个字符串作为参数 这是为了根据枚举或类似的东西验证字符串吗 另外 我想做的是找到一种简单的方法来验证必须出现在枚举中的 3 个字符的字符串 有什么建议吗 谢谢 亚历克斯 我确实发现你提到的 Ra
  • 没有类型的 IEnumerable 属性

    我正在尝试创建一个类似于来自 MSDN 的官方 DataGrid ItemsSource 的属性 public IEnumerable ItemsSource get set 这提供了对任何派生类中任何类型的支持 有了这个 我可以设置类似的
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • PC 上 XNA 中的信箱和缩放

    有没有一种方法可以让我基本上以 1080p 或 720p 作为默认分辨率来开发 XNA 游戏 然后根据设置的分辨率将游戏中的所有内容缩放到适当的大小 而不必在每个 Sprite 中设置缩放因子Draw 方法 我的想法是 我可以基于 1080
  • 如何以一对一/零关系更新员工和身份用户

    我正在尝试更新员工记录 也想更新身份用户 如果我先单独更新身份用户 例如 UserManager Update user Context Entry employee State System Data Entity EntityState
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位
  • 如何使用 makecert 创建证书颁发机构证书?

    我正在尝试创建一个使用 SSL 和自签名证书的网站 这就是我所做的 创建权威证书 makecert n CN root signing authority r sv root pvk root cer 创建目标证书 makecert r p
  • SQL Server 存储过程更新不适用于 ASP.Net C# GridView RowUpdating

    我遇到了问题 但没有抛出任何错误 发生的情况是 我有一个存储过程正在驱动我的更新 但我无法更新 gridview 我击中了Update链接按钮 但它实际上并没有更新记录 这是我的存储过程 ALTER PROCEDURE dbo CompDe
  • 对 boost::python::detail::init_module 和朋友的未定义引用

    我正在尝试使用官方网站上的示例来测试 boost python 但它会产生很多错误 以下是我所做的和错误 下载Boost1 55与this http choorucode com 2013 12 27 how to upgrade the
  • 我的代码将对象设置为错误的父对象,如何修复此问题?

    因此 我目前正在为一篇学校论文进行编程 当前我的代码工作计划 或者至少我认为应该是 在使用碰撞作为拖放条件下 将对象设置为指定父级的子级 使用 if 条件的传感器 然而 当我运行游戏时 我小时候想要设置的对象被错误的父母使用 这基本上就是发
  • C++ Protobuf 与 JSON 的转换 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有人熟悉将 protobuf 消息与 JSON 相互转换的稳定 C 解决方案 库 代码片段等 吗 在我看来 这个更好 https gith
  • 使用实体框架的子查询

    我正在移植一个子系统NHibernate to 实体框架并希望了解将以下查询移植到的最佳方法EF var date DateTime Now It can be any day AccountBalanceByDate abbd null
  • 本地化 Win7 版本上的 UI 截断

    我有两个分别用 C NET 3 和 Wise Installer 开发的 UI UI 是向导页面 这在 Win 7 英文操作系统上完美运行 但是当我在Win7韩语或中文上部署该应用程序时 我看到了截断 即使我对字体进行硬编码 我也会看到这个
  • 如何使用 IComparable 接口?

    我需要一个如何使用的基本示例IComparable接口 以便我可以按升序或降序以及要排序的对象类型的不同字段进行排序 好吧 既然你正在使用List
  • c# 变量声明上的泛型,这可能吗?

    我有以下问题 public class MyClass
  • QT 和 Crypto++ 以及 /MTd

    我有两个带有 MSVC2013 32 位编译器的 QT 5 5 项目 第一个是 Qt 控制台应用程序 正在使用 crypto 这两个在 pro 文件中 QMAKE CXXFLAGS RELEASE MT QMAKE CXXFLAGS DEB
  • 近指针和远指针

    我们常用的指针 我们通常使用的指针 近指针和远指针之间有什么区别 近指针和远指针在当今的 C C 系统中是否有实际用途 任何需要使用这些特定指针而不是其他 c c 语义的实际场景都会非常有帮助 近和远关键字起源于英特尔之前的分段内存模型 近
  • LINQ 中的日期差异逻辑

    我尝试从两个不同的数据库表访问数据 然后使用 C 中的 LINQ 将它们连接到两个字段上 我相信我有一个逻辑合理的整体工作方法 我遇到的部分问题是 我在连接两个表之前过滤了它们的数据 因为这些表的数据太多 会导致崩溃 主要问题是 对于其中一
  • 如何从 WMI 旋转远程进程获取退出代码

    我正在通过 WMI Win32 Process Create 远程执行一个进程 但无法弄清楚如何确定该进程何时完成执行 当我第一次发出命令时 有一个退出代码 0 表示成功 但这只是告诉我进程已成功生成 有什么方法可以知道该过程何时结束 谢谢

随机推荐

  • 如何在 SwiftUI 中实现触发 switch case 的左或右 DragGesture() ?

    我在视图中创建了一个 DragGesture 无论用户向左还是向右滑动 它都应该选择 State Bool 问题是只检测到向右滑动 如何使用 gesture 捕获用户在屏幕上向左还是向右滑动 import SwiftUI struct Sw
  • 为什么要给伪元素添加块级别?

    从本页的代码 http css tricks com snippets css sticky footer http css tricks com snippets css sticky footer page wrap min heigh
  • 视图和表在性能上的差异

    对于包含大量数据的表来说什么是最好的 我有一个存储过程 可以根据一些过滤器创建报告 在我的 SP 中 我读取表格并放入所有内部联接和公式 然后在放置过滤器的 where 条件中 谈论性能什么更好 创建一个包含所有联接的视图或读取表 就像我正
  • 无法在静态方法中创建静态变量?

    为什么这不起作用 public static int GetListOfAllDaysForMonths static int MonthDays new int 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  • 从 Angular 2 中的 FileReader 获取值

    我有以下组件加载文件并将其内容绑定为字符串 export class NgCsvComponent Input csv any Output csvChange any new EventEmitter public localCsv an
  • 如何隐藏 UITableViewCells 同时不违反自动布局约束

    我目前正在开发一个应用程序来学习 iOS 编程和 Swift 我有一个视图 其中包含两个主要子视图 一个 MKMapView 和一个 UITableView 当在 MapView 中选择某个注释时 我希望隐藏 TableView 中的某些单
  • 形状图裁剪/截断特征名称

    import csv import pandas as pd import numpy as np from matplotlib import pyplot import shap from sklearn import preproce
  • 用字典中的值替换列表中的单词

    我正在尝试创建一个简单的程序 让您输入一个句子 然后将其分割成单个单词 另存为splitline 例如 the man lives in a house 每个单词将与一个字典进行匹配 该字典包含针对以下值存储的多个单词 mydict the
  • 当页面更改时,如何刷新/重新加载 Polymer 元素?

    我创建了一些自定义元素 当他们准备好时 由ready 他们开始从 API 下载 JSON 数据 并显示给用户 想要在单页应用程序中使用它们 并在数据可见时下载数据 现在 它首先下载所有页面的所有数据 因为我使用了ready event 是否
  • JavaScript 上的 String.ToCharArray() 等效吗?

    我正在尝试找到一种在 JavaScript 上为每个字符分割字符串的方法 相当于String ToCharArray from c 稍后用逗号将它们连接起来 ex 012345 分割后 gt 0 1 2 3 4 5 加入后 gt 0 1 2
  • Android ListView 中的 JSONArray

    urlHi 我有这段代码 可以从 php 页面接收数据 我想将该数据放入列表视图中 我收到该数据 并且通过 system out println 看到了该数据 但列表视图中有白行 代码 public class Utenti extends
  • 设计路由错误

    设置设备时我似乎无法克服此错误 Routing Error wrong constant name Devise registrationsController or Routing Error wrong constant name De
  • 在 Python 中将一个 SFTP 文件夹中的所有文件归档到另一个文件夹

    我能够使用 Martin Prikryl 给出的以下语法成功地将文件从 S3 上传到 SFTP 位置使用 Boto 3 将文件从 AWS S3 传输到 SFTP https stackoverflow com questions 58719
  • 在jquery中用html内容创建一个变量

    您好 我正在尝试在 jquery 中创建一个变量 其中包含一个用于在网站的不同区域中输出的表 但这给了我一个错误 我不明白为什么 这是我的 JQUERY var copy table width 750 border 0 cellspaci
  • 如何使用 Gradle 交叉编译到 Scala.JS

    在 SBT 中添加 Scala JS 依赖项时 您可以使用 E g libraryDependencies be doeraene scalajs jquery 0 9 0 这是如何在 Gradle Scala 插件中完成的 scala 版
  • 在 postgres 上将表导出为 csv

    如何将表导出到 csv在 Postgres 中 当我不是超级用户并且无法使用copy命令 我仍然可以使用右键单击 导入 按钮将数据导入到 postgres 但没有导出选项 使用 psql 并将流重定向到文件 psql U
  • ASP.NET MVC (Razor) 与 Angular 5

    我们目前正在考虑从 ASP NET MVC 迁移到 Angular 5 主要是因为它看起来是最好 最新的框架 然而 我们似乎都无法找出为什么 Angular 比 MVC Razor 更好的硬道理 SPA 与 MPA 似乎是不同的方法 但实际
  • ES 无法在 Win x64 Java SE 8 u 171/2 上启动

    我有 Win 10 x64 我更新到 Java 8 Update 171 尝试使用此命令行运行 ES cd bin elasticsearch bat Ecluster name ABTest Cluster 00 Enode name A
  • Plotly:如何在我的桑基图列上写文本?

    我已经建立了一个使用plotly 绘制桑基图 https plotly com python sankey diagram 我想为每个列命名 并赋予每个列标题 如下面的红色文本 我该如何写这些栏目标题 您可以使用注释来添加文本 使用 x 值
  • myVector.erase(myPtr) 是否删除 myPtr 指向的对象?

    如果我有以下代码 Foo f new Foo vector