gpt4 book ai didi

C++。 var1 = new (_field) Constructor() 的含义

转载 作者:行者123 更新时间:2023-11-28 02:10:45 28 4
gpt4 key购买 nike

我在阅读别人的 C++ 代码时发现了这个结构:

_worklist = new (_arena) Block_List();

我的 C++ 有点生疏,有人可以解释这里发生了什么吗?我不明白这段代码在做什么。

编辑:

_arena 是一个类型为 Arena 的字段.

编辑 2:

这里是Block_List的代码

编辑 3:我的错,我现在明白应该提供更多上下文,这里是整个代码:http://hg.openjdk.java.net/hsx/hsx24/hotspot/file/ed3ac73a70ab/src/share/vm/opto/live.cpp#l52

最佳答案

放置语法用于调用带有附加参数的自定义 operator new。在这种情况下,Block_List 派生自 ResourceObjResourceObj 包含以下函数:

void* operator new(size_t size, Arena *arena) {
address res = (address)arena->Amalloc(size);
DEBUG_ONLY(set_allocation_type(res, ARENA);)
return res;
}

表达式 new (_arena) Block_List(); 将调用此 operator new,传入所需的大小和传入的值。该函数返回用于对象的地址。

关于C++。 var1 = new (_field) Constructor() 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840594/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com