这种模式是什么意思?新的(&entries [num_entries])个项目;

时间:2019-03-05 20:40:27

标签: c++ arrays initialization

代码如下:

struct set_t {
       static const uint32 MAX_ENTRIES=128;
       uint32 num_entries;
       item_t entries[MAX_ENTRIES]; 

       inline void add_back(item_t item){
            ***new (&entries[num_entries]) item;***
            ++num_entries;
       }

};

此行:“新(&entries [num_entries])个项目;”令人困惑,它实际上分配内存吗?

1 个答案:

答案 0 :(得分:1)

请看一下这个问题:What uses are there for "placement new"?

new (address) varname;

是所谓的放置新运算符,它在预分配的缓冲区上构造一个对象。

所以您的问题的答案是:它不会分配新的内存。