C++. Meaning of var1 = new (_field) Constructor()

C++. Meaning of var1 = new (_field) Constructor()

本文关键字:field Constructor new Meaning of var1 C++      更新时间:2023-10-16

我发现这个结构读取了别人C++代码:

_worklist = new (_arena) Block_List();

我的C++有点生疏,有人可以解释一下这是怎么回事吗?我不明白这段代码在做什么。

编辑

_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 ,传入所需的大小和传入的值。该函数返回要用于对象的地址。