C ++。 var1 = new(_field)构造函数()的含义

时间:2016-03-07 09:52:13

标签: c++

我发现这个结构正在阅读别人的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

1 个答案:

答案 0 :(得分:2)

Placement语法用于调用带有其他参数的自定义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,传入所需的大小和传入的值。该函数返回用于对象的地址。