SelectInst *Sel = new(3) SelectInst(C, S1, S2, NameStr, InsertBefore);
此处new
运算符的含义是什么?
3
运算符后的数字new
的含义是什么?
答案 0 :(得分:12)
此代码来自LLVM's codebase。
有一个自定义spring.data.elasticsearch.properties.cluster.routing.allocation.disk.threshold_enabled=false
in scope,它用于placement-new初始化对象(cfr。placement syntax)
operator new
这是一个玩具示例:
void *User::operator new(size_t Size, unsigned Us) {
return allocateFixedOperandUser(Size, Us, 0);
}
具体而言,该代码用于调整分配的空间以适应其他数据。
答案 1 :(得分:7)
假设SelectInst
提供了用户定义的placement operator new,它将int
作为用户定义的参数;调用语法意味着使用该用户定义的放置operator new
进行内存分配。 e.g。
class SelectInst {
public:
static void* operator new (std::size_t count, int args) {
// ~~~~~~~~
...
}
};
SelectInst *Sel = new(3) SelectInst(C, S1, S2, NameStr, InsertBefore);
// ~~~
答案 2 :(得分:4)
您可能在SelectInst
或全局范围内拥有自定义运算符new(类似于 placement new ):
struct SelectInst
{
SelectInst(/*...*/);
// ...
static void* operator new(std::size_t sz, int custom);
static void operator delete(void* ptr, int custom); // new counter part
};
或
void* operator new(std::size_t sz, int custom);
void operator delete(void* ptr, int custom); // new counter part
的最后一部分
答案 3 :(得分:-1)
在doc 上,它表示这是以字节为单位的请求内存量。 (如果它没有超载) 这是一个3 * 8 = 24位的请求,用于将objet存储在内存中。 想想这在某种类型的malloc残余。