placement-new

placement-new

文章 0 浏览 7

可以重写新的编译吗?

背景 我通过应用 new 语句的编码指南来清理旧版代码库。 有 auto x = new(className); 的代码,我将我重写为 auto x = new ClassName(); 。很明显…

枫林﹌晚霞¤ 2025-02-12 23:34:50 0 0

使用安置新的行为或内存泄漏

我正在学习在C ++中使用列出的书籍在这里 。现在,要查看一些示例,我遇到了以下片段,其中一篇文章声称给定的例子)具有不确定的行为: 例如,这具有…

或十年 2025-02-12 12:24:44 0 0

当我不使用新位置时,为什么我会发现新的位置错误?

我遇到了这个错误: error: exception cleanup for this placement new selects non-placement operator delete [-fpermissive] ptrCpMsgHandler = ne…

想念有你 2025-01-30 01:41:08 1 0

放置在具有自动存储持续时间合法的常量变量上是新的吗?

以下代码是根据标准合法的吗? #include int main() { const int x = 3; new ((void *)&x) int { 15 }; } 在我看来,只要不使用对 x 的引用,就应该有…

魂牵梦绕锁你心扉 2025-01-28 15:26:42 5 0

如何将现有数据表示为 std::vector

我必须将现有数据(已知大小的 unsigned char 内存区域)传递给需要 const std::vector& 的库函数。有没有办法“欺骗”库函数,让它相信它在对现有数…

最好是你 2025-01-14 16:46:21 3 0

C++将 new 放置到 NULL 中的不寻常用法

在 以下 C++98 语句中: multiThreadService[nextBuffer] = new (NULL) MultiThreadService(binder); 这样说是否正确: 这是“placement new”, 该对…

初心 2025-01-14 15:13:39 5 0

在现有的 T 对象上放置新的 U 并操纵它是 UB?

在此链接中,存储重用部分显示以下示例。 void x() { long long n; // automatic, trivial new (&n) double(3.14); // reuse with a different type o…

深白境迁sunset 2025-01-11 11:14:22 3 0

创建静态单例时需要什么 MaxAlign 技巧?

遵循 Loki 单例中的代码片段实现,它展示了所谓的“MaxAlign Trick”。我认为它与对齐有关(废话!),但是尝试与联合内提到的所有类型对齐的目的是什…

风苍溪 2025-01-09 13:04:42 5 0

为什么我应该使用新的展示位置?

看起来,placement new 在预先分配的内存上创建了一个新对象,那么这是否意味着它会花费更少的时间?看起来它比使用旧的普通 new 分配更快。那么,如…

心是晴朗的。 2025-01-03 14:29:22 5 0

销毁然后使用相同的变量构造新对象

有时重新开始是件好事。在 C++ 中,我可以采用以下简单的操作: { T x(31, Blue, false); x.~T(); // enough with the old x ::new (&x) T(22, Brown,…

时光清浅 2025-01-02 18:17:18 3 0

malloc 和新与新的展示位置

过去几天我一直在研究这个问题,到目前为止,除了教条论点或诉诸传统(即“这是 C++ 方式!”)之外,我还没有真正找到任何令人信服的东西。 如果我正…

余生再见 2024-12-28 16:11:10 4 0

为什么这段代码试图调用复制构造函数?

我刚刚花费了大量的时间来解决 Visual Studio 中的编译错误。我已将代码提取到下面的小型可编译示例中,并在 IdeOne 上进行了尝试,并得到了相同的错…

嘿哥们儿 2024-12-28 15:15:44 6 0

如何将 new 放置在堆栈上

考虑以下代码: char mem[sizeof(char)]; void* p = mem; f = new(p) char; 由于变量 mem 的内存应该位于堆栈上 那么,为什么这块内存最终没有被自动…

海之角 2024-12-27 18:32:25 4 0

如何正确释放placement new分配的内存?

我读过一些文章,当您使用 placement new 时,您必须手动调用析构函数。 考虑下面的代码: // Allocate memory ourself char* pMemory = new char[ si…

孤蝉 2024-12-27 18:21:17 3 0

对于在同一地址构造两次的对象,编译器如何知道必须调用第二个析构函数?

在下面的代码中,类 C 中的对象 sub 被构造了两次。第一个构造调用默认构造函数 Sub(),第二个构造使用 placement new 在同一地址重建此对象。 因此析…

烈酒灼喉 2024-12-27 15:31:10 6 0
更多

推荐作者

alipaysp_snBf0MSZIv

文章 0 评论 0

梦断已成空

文章 0 评论 0

瞎闹

文章 0 评论 0

寄意

文章 0 评论 0

似梦非梦

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文