函数调用中的新运算符

2023-12-23

我的问题是分配的对象会发生什么new函数调用内部的运算符。

一个具体的例子:我有一个私有向量pV我想将其发送到类之外的对象/函数,foo->func(std::vector<int> *vec)。我首先尝试写

foo->func( new std::vector<int>(pV) )

但这导致了内存泄漏(当在循环内重复调用该函数时)。当我专门创建一个新对象,调用该函数,然后删除该对象时,整个过程正常进行,没有内存泄漏。

当函数返回时,新创建的对象不应该“过期”并被删除吗?如果不是,我应该如何从被调用函数内部删除该对象?哪种方法更好?


C++ 中不存在新对象“过期”这样的事情:它不是垃圾收集或引用计数语言,因此您需要手动编码分配的对象的所有内存管理new or new[].

在这种特殊情况下,您可以使用unique_ptr确保自动删除:

for (int i = 0 ; i != 10000 ; i++) {
    std::unique_ptr<std::vector<int> > tmp = new std::vector<int>(pV);
    foo->func(tmp);
}

这里没有魔法,尽管看起来并不存在delete: 调用delete内部显式编码unique_ptr,因此出于所有实际目的,它仍然是手动的。

更好的解决方案是在自动存储中分配向量,并将指针传递给foo->func:

for (int i = 0 ; i != 10000 ; i++) {
    std::vector<int> tmp(pV);
    foo->func(&tmp);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数调用中的新运算符 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 是否应该在 Rails 中测试本机验证?

    大家都知道自动化测试是一件好事 并不是每个人都确切地知道要测试什么 我的问题是是否应该在应用程序中测试 validate presence of validate uniqueness of 等本机验证 在我的办公室里 我们三个人 一个认为
  • gearman 中的错误情况和重试?

    有人可以指导我 gearman 在出现异常时如何重试吗 抛出或发生错误时 我在 Django 应用程序中使用 python gearman 客户端 我的工作人员是 作为 Django 命令启动 我从中读到博客文章 http www herm
  • AT命令C++代码的输出

    我编写了以下代码 该代码使用 GSM SM5100B 向我的手机发送一条简单的消息 但这不起作用 我想用 C 代码检查每个 printf 行的输出 例如 AT CMFG 1 ok AT CMGS 69 ok ETC 有什么理由要实施这个吗
  • 如何以编程方式将 2 个或更多 .WAV 文件连接在一起?

    我需要能够将 2 个或多个 wav 文件合并为一个 wav 文件 我必须使用 C 以编程方式执行此操作 不能选择第 3 方产品 我知道 System Media SoundPlayer 类 但我不想播放 wav 而只是创建它 这是使用构建的
  • powershell 扩展对象

    如何在 PowerShell 中向对象添加列 例如 Get Childitem 返回一个对象 其中包含模式 LastWriteTime 长度名称等 我想用一个额外的列来扩展这个对象 该列是根据 LastWriteTime 计算出来的 这是原
  • 如何在android中调试kivy应用程序?

    我正在 Android 中开发一个 kivy 应用程序 编译并运行应用程序后 如果有 崩溃或某种错误 我如何找到具体的错误 听说有一个日志程序 您想要的工具称为 logcat 该文档是http developer android com t
  • 当给定区域性不知道格式时,Convert.ToDateTime() 如何解析给定字符串

    我有以下代码 并且它有效 string testDateStr 2009 7 28 05 23 15 DateTime testDateObj Convert ToDateTime testDateStr CultureInfo GetCu
  • R 中两个固定因子嵌套和交叉因子

    我想设计一个嵌套模型 有点难以解释 所以我画了一张图 所有因素都是固定的 每个因素都有 2 个水平 0 1 A 和 B 嵌套了 C 和 D 因子 E 和 F 与这些因素独立并且交叉 我想知道他们之间的互动 我知道我可以在 R 中针对一个嵌套
  • 有条件地针对特定产品 ID 和数量自动应用优惠券

    我正在尝试根据产品 ID 和数量条件在我的 WooCommerce 商店中自动应用优惠券 我的最终目标是当两 2 个所需产品添加到购物车时自动应用特定优惠券 并且每当将三 3 个所需产品添加到购物车时自动应用另一张优惠券 单一数量的产品不应
  • 是否有 C++ 源/lib 来解决具有矩形箱(不是正方形)和旋转的 2D Bin Packing? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 正如标题所示 我需要 C C 源代码或库 可以使用它来解决 2D 矩形形状的装箱问题 其中箱子也是矩形
  • Linq to SQL Select 中的分组依据和求和

    我需要将该 SQL 查询转换为 Linq SELECT SUM ArticleAmount as amount ArticleName FROM DB dbo OrderedArticle group by articlename orde
  • 配置错误。连接到数据库时未找到类 [org.apache.derby.jdbc.EmbeddedDriver]

    我正在使用命令mvn exec java运行我的应用程序cmd 我的 Persistence xml 属性是
  • 地理编码 API 在 api 响应中出现 ZERO_RESULTS,但在浏览器中有效

    我们正在使用地理编码 API 的标准许可证 我们观察到服务响应存在一些间歇性问题 我们从 API 获得 ZERO RESULTS 但是当我们在浏览器中使用相同的地址时 它可以工作并为我们提供 OK 状态 并且对于多个地址发生这种情况在那段时
  • 使用 SpannableString 调整文本对齐方式

    我创建了一个SpannableString 第一个字符 最后 2 个字符比其余字符小 它看起来像这样 sBBBBss 我想对齐较小的字符 以便它们与较大文本的顶部对齐 而不是底部 如它们所示 这可能吗 我想我正在寻找类似这样的伪代码 myA
  • hibernate 6.0.0.Final 自定义方言不再工作

    我正在使用 PostgreSQL 12 和 Hibernate 5 6 8 以及自定义方言 例如 registerFunction hstore find new SQLFunctionTemplate StandardBasicTypes
  • Java中如何安排周期性任务?

    我需要安排一个任务以固定的时间间隔运行 我怎样才能在长间隔 例如每 8 小时 的支持下做到这一点 我目前正在使用java util Timer scheduleAtFixedRate Does java util Timer schedul
  • 仅针对 Tab 和 Enter 自动完成

    在这种情况下如何禁用自动完成 Pressing after Rate autocomplets with DeviceRotationRate as displayed 我只想使用 Tab 或 和 Enter 进行自动完成 所以我会知道会发
  • 使用 EPPlus 加载大量 Excel 数据

    我有一个基本的 winforms 应用程序 用户可以上传 excel 文件 xlsx 并且我想读取该文件的内容 因此我使用 EPPlus 问题是 我正在尝试加载一个非常大的 Excel 文件的内容 它有 7 个选项卡 其中一个选项卡有超过
  • 如何解决异常 在 laravel 5.5 中运行 Dusk 是不安全的?

    我将我的项目从 laravel 5 4 升级到 laravel 5 5 我在本地环境中没有任何问题 但在服务器中我收到此异常 我搜索了很多 我知道这个问题可能会重复 但没有解决方案解决我的问题 当环境是生产环境时 如何不注册黄昏 我在 Ap
  • 函数调用中的新运算符

    我的问题是分配的对象会发生什么new函数调用内部的运算符 一个具体的例子 我有一个私有向量pV我想将其发送到类之外的对象 函数 foo gt func std vector