Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
类型双关:省略放置 new 和析构函数
已经有很多关于严格别名规则和类型双关的帖子 但我找不到我可以理解的关于对象数组的解释 我的目标是拥有一个内存池非模板类 用于存储对象数组 基本上我只需要在访问时知道实际类型 它可以被视为一个非模板向量 其迭代器将是模板 我想到的设计提出了几
c
placementnew
typepunning
即使在同一类型上,是否应该使用 new 位置来调用析构函数
include
c
placementnew
销毁对象放置新后未调用析构函数
我不知道为什么这不起作用 下列Function是通过放置 new 创建的 提供了一个函数来检查它是否应该被破坏 如果是 则手动调用其析构函数 这是测试用例 似乎从未调用析构函数 Represents a function at runtim
c
destructor
placementnew
不死对象 ([basic.life]/8):为什么允许引用重新绑定(和 const 修改)?
不死 条款 我将 undead 子句称为 C 规则 即在对象销毁后 如果在同一地址创建新对象 则有时可以将其视为与旧对象相同的对象 该规则在 C 中始终存在 但附加条件发生了一些变化 我被迫阅读最新的不死条款这个问题 https stack
c
languagelawyer
constants
lifetime
placementnew
释放从新放置分配的内存
考虑下面的代码 include iostream include conio h using namespace std class sample private int i public sample int ii 0 i ii cout
c
memorymanagement
placementnew
在 C++ 中放置新的派生基子对象
是否定义了放置新派生类的可简单破坏的基础对象的行为 struct base int ref struct derived public base complicated object complicated derived int r co
c
inheritance
strictaliasing
objectlifetime
placementnew
使用reinterpret_cast访问类似“struct {double, int}”的对象
通过访问对象reinterpret casted 指针和相关的 UB 已经在这里进行了广泛的讨论 阅读问题和答案后 我仍然不确定是否正确使用 POD 类型的未初始化内存 假设我想 模仿 struct double d int i 通过手动为
c
languagelawyer
C17
placementnew
数组放置新需要缓冲区中未指定的开销?
5 3 4 expr new C 11 Feb 草案给出了示例 new 2 f T 5 结果调用operator new sizeof T 5 y 2 f 这里 x和y是非负未指定值 表示数组分配开销 的结果新表达将从返回的值中抵消此金额o
c
memorymanagement
standards
placementnew
C++ 结构“placement new”有什么用途?
我刚刚了解了名为 placement new 的 C 结构 它允许您精确控制指针在内存中指向的位置 它看起来像这样 include
c
memory
newoperator
placementnew
equivalence
通过 destruct+move 构造进行的移动分配安全吗?
这是使用移动构造函数为大多数类定义移动赋值的一种非常简单的方法 class Foo public Foo Foo foo you still have to write this one Foo operator Foo foo if th
c
C11
movesemantics
placementnew
moveassignmentoperator
将运算符 new(sizeof(T) * N) 返回的内存视为数组
在 C 中 可以使用以下方式分配动态数组malloc sizeof T N 然后使用指针算术获取此动态数组中位于 i 偏移量的元素 在 C 中 可以使用类似的方法operator new 在相同的方式malloc 然后放置新的 例如 可以在
c
Arrays
languagelawyer
placementnew
alignas
在同一地址多次放置 new 是否定义明确/合法?
注意 这个问题的动机是试图提出预处理器黑客技术来生成无操作分配来回答另一个问题 接受新对象的宏 https stackoverflow com questions 7522949 c macro that accent new object
c
undefinedbehavior
languagelawyer
placementnew
这第二个新的是什么?
第二行是什么 在回答另一个问题时看到的 int x new int 1 int y new x int 第二行之后 x 和 y 具有相同的值 指向相同的位置 y x 和第二行有什么区别 它像构造函数还是什么 It s 安置新 http en
c
syntax
terminology
newoperator
placementnew
我们真的需要放置新表达式吗?
我试图理解放置新表达式 https timsong cpp github io cppwp new delete placement in C 这个堆栈溢出答案 https stackoverflow com a 35089001 2326
c
dynamicmemoryallocation
placementnew
objectconstruction
POD 类已初始化,并已初始化放置新默认值?
如果我使用新的放置来初始化 POD 类 我可以假设内存将默认初始化 为零 吗 这个资源 http www fnal gov docs working groups fpcltf Pkg ISOcxx doc POD html明确指出 如果您
c
placementnew
为什么构造函数不能被显式调用,而析构函数却可以?
在下面的 C 代码中 我可以显式调用析构函数 但不能显式调用构造函数 这是为什么 不会是明确的 ctor 调用更多富有表现力的 and unified与 dtor 案有关吗 class X int main X x X operator n
c
constructor
destructor
placementnew
explicitdestructorcall
放置新的零会占用内存吗?
我有以下代码 struct foo void bar foo d new d foo d 是否表达new d foo d 留下指向的对象d不变 更具体地说 如果类foo并且其中递归包含的所有对象都只有简单的复制构造函数 那么new d fo
c
newoperator
placementnew
由placement-new创建的普通类型的生命周期从什么时候开始?
在深入研究动态内存时 我发现琐碎类型如何开始其生命周期似乎是矛盾的 考虑片段 void p operator new sizeof int 1 2 new p int 3 什么时候int开始它的生命周期 只获取存储 operator new
c
languagelawyer
objectlifetime
placementnew
objectmodel
在容器中使用 new 放置
我刚刚遇到了一些 C 容器实现 该类使用内部缓冲区来管理其对象 这是一个没有安全检查的简化版本 template
“新的展示位置”有什么用途?
这里有人用过C 的 placement new 吗 如果是这样 那又是为了什么 在我看来 它只对内存映射硬件有用 Placement new 允许您在已分配的内存中构造一个对象 当您需要构造对象的多个实例时 您可能希望这样做以进行优化 并且
c
memorymanagement
newoperator
placementnew
1
2
»