C++ 中的就地构造函数是什么? [复制]

2023-12-01

可能的重复:
C++ 的“放置新”

C++ 中的就地构造函数是什么?

e.g. Datatype *x = new(y) Datatype();


这称为放置新运算符。它允许您提供将分配数据的内存,而无需new运算符分配它。例如:

Foo * f = new Foo();

上面将为您分配内存。

void * fm = malloc(sizeof(Foo));
Foo *f = new (fm) Foo(); 

上面将使用调用分配的内存malloc. new不会再分配了。但是,您并不局限于课程。您可以对通过调用分配的任何类型使用放置新运算符new.

新安置的一个“陷阱”是你不应该使用以下命令释放通过调用放置新运算符分配的内存delete关键词。您将通过直接调用析构函数来销毁该对象。

f->~Foo();

手动调用析构函数后,内存就可以按预期释放。

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

C++ 中的就地构造函数是什么? [复制] 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46

随机推荐

  • 缺少 1 个必需的位置参数:'self'

    这是我的代码 class Email Stuff def init self self emailaddr None self recipaddr None self EmailUser None self EmailPass None d
  • 如何确定文本节点中被点击的字符?

    我可以设置一个事件侦听器来告诉我 HTML 文档中某个位置何时发生鼠标单击 但是 如果单击发生在某些文本上 我需要知道单击发生在文本中的哪个字符上 有没有办法做到这一点 我能想到一些非常令人讨厌的解决方案 例如 对于文档中的每个字符 我可以
  • HttpClient上传大文件并显示发送的字节数

    我找到了这个代码示例 import org apache http params CoreProtocolPNames import org apache http util EntityUtils public class PostFil
  • 从 Excel 将超过 65.535 行导入到 MS Access

    我正在运行以下代码将整个工作表从 Excel 导入到 Access 该工作表有 77k 行 但 Access 仅导入 65 535 行 关于如何修复它有任何疑问吗 Excel 和 Access 都是 2013 版本 Function imp
  • 为什么我们需要将 MDSYS.ST_GEOMETRY 视为 ST_LINESTRING 才能使用 ST_PointN(1)?

    MDSYS ST GEOMETRY 甲骨文18c 以下查询有效 它从 MDSYS ST GEOMETRY 中提取第一个点 Source https www spdba com au using oracles st geometry typ
  • 使用intel内联汇编器编码带有进位的bigint add

    我想做一个快速代码来添加大整数中的 64 位数字 uint64 t ans n uint64 t a n b n assume initialized values for int i 0 i lt n i ans i a i b i 但以
  • 在 webgl 片段着色器中按颜色计算像素

    我有 2d 纹理 S 并且想要返回 3d 纹理 H 这样像素 H r g b 等于纹理 S 中颜色 rgb 的像素数 基本上是纹理 S 中颜色的直方图 我知道遮挡查询 但它仅在 webgl2 中可用 而 IIUC 即使在那里也只能使用布尔结
  • Android SeekBar 拇指自定义

    我想隐藏栏 只想显示拇指 我用 max height 0dip 做到了 但它没有完全起作用 我还想在拇指上设置文本并使用多个图像创建拇指 例如 拇指按钮像图像一样并且具有文本 并且该按钮具有尾部下字 它随着行增量而增加 关于删除背景 我设法
  • 从 python 脚本获取 shell 脚本“读取”值

    外壳脚本 你好 sh bin bash echo Enter your name read name echo Hello name 我想从 python 中调用 Hello sh 并以非交互方式填充变量 name 如何做呢 不知道如何阅读
  • 在 Swift 中的 UITableViewController 之上添加一个 UIView

    我目前使用 UITableViewController PFQueryTableViewController 我想在 TableView 顶部显示一个 UIView 理想情况下 我想在故事板中执行此操作 这样我就可以轻松地向其中添加其他标签
  • nltk下载url授权问题

    我尝试使用 nltk download 更新我的 nltk 数据 但收到 HTTP 错误 401 需要授权 当我追踪有问题的网址时 我在 downloader py 中找到了它 DEFAULT URL http nltk googlecod
  • 如何使用 GPS 在 Android 中获取我的当前位置?

    我想通过 GPS 以地址形式获取我当前的位置 我正在使用android studio 它说我的应用程序停止工作 其中有什么错误呢 有人可以帮我摆脱这个困境吗 我在 Activity main xml 文件中的代码是
  • 充气城堡:PEMReader => PEMParser

    拥有 PEM 证书 例如 BEGIN RSA PRIVATE KEY Proc Type 4 ENCRYPTED DEK Info AES 256 CBC B9846B5D1803E 使用 BC 1 46 我使用以下代码提取密钥对 int
  • 电子表格上的 Google 日期与脚本记录器中的日期不同。这是时区问题吗?

    我已在 Google 电子表格上输入了应发送电子邮件的具体日期 我有一个脚本 它从电子表格中获取值 以 1 比较 应发送的日期电子邮件 是否等于今天 如果是 则运行脚本或 2 将今天的日期输入到电子表格中 即 日期 电子邮件已发送 我看到记
  • Java Jar hell 运行时异常

    我在运行单元测试时遇到了 jar hell 的问题 java lang RuntimeException found jar hell in test classpath at org elasticsearch bootstrap Boo
  • HTML 5 本地存储

    我正在寻找一种将几乎所有 JS 和 CSS 存储在本地存储中的方法 我知道如何使用 CSS 来做到这一点 似乎工作顺利 但是 如果您尝试存储具有任何 HTML 调用的 JS 则会停止保存到本地存储 理想情况下 我只想创建一个源文件列表以供浏
  • 如何在 Angular 2 中包含 JQuery 插件?

    我在 Angular 2 项目中安装了 jquery 插件Link npm i jquery bootstrap scrolling tabs 并添加 angular cli json styles styles css node modu
  • 三元条件中的隐式转换问题[重复]

    这个问题在这里已经有答案了 可能的重复 条件运算符不能隐式转换 为什么 null 需要在这里进行显式类型转换 我进行了搜索 但没有找到关于为什么会发生以下情况的良好解释 我有两个具有共同接口的类 并且我尝试使用三元运算符初始化此接口类型的实
  • Prism 应用程序 CAL 中的菜单服务

    我正在尝试创建一个 Prism CAL 框架 这是我第一次涉足 CAL 但在设计用于注册某个区域的菜单项的服务时遇到困难 这是我到目前为止所想到的
  • C++ 中的就地构造函数是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 C 的 放置新 C 中的就地构造函数是什么 e g Datatype x new y Datatype 这称为放置新运算符 它允许您提供将分配数据的内存 而无需new运算符分配它 例如 Foo f n