由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个placement new 和 operator new的问题
相关主题
c++ new的一个问题一道 C++ 的题。
Placement new的一个问题bloomberg电面
大家新年好。 请教一个 c interview question (转载)菜鸟求救 请大家看看我的代码有没有问题
bloomberg onsiteC++相关的面经
怎么在main()函数里面free我malloc()的空间问一个C的简单问题
c++ 问题再问一个C的malloc( )
一般电面C++会问到什么专业问题?用 c 实现的字符串 permutation,求批评指点
memory leaking问题都从那些方面入手查找原因?c interview question
相关话题的讨论汇总
话题: mem话题: new话题: operator话题: void话题: buf
进入JobHunting版参与讨论
1 (共1页)
f****4
发帖数: 1359
1
class Mem{
public:
void* operator new(size_t n, int a);
void operator delete(void* p);
};
Mem* a = new(10) Mem;
a->~Mem();
delete a;
// operator new & delete work correctly
void* buf = malloc(sizeof(Mem)+sizeof(int));
Mem* b = new(buf) Mem; // wrong
b->~Mem();
free(buf);
我发现只要重载了operaor new之后,缺省的placement new的表达就出错了
重载 void* operator new(size_t n, void* buf);之后又好了
问题是我重载的这个void* operator new(size_t n, void* buf),是不是placement
new?有人说placement new是不能重载的(http://cyclopedia.name/post/e6b58
h****8
发帖数: 599
2
是不是因为 Mem* b = new(buf) Mem;调用的是class Mem中的被重载的new
如果换成 Mem* b = ::new(buf) Mem;试试看呢
x***y
发帖数: 633
3
When you write custom versions of operator new, all the 3 form of operator
new in global space won't be visible until you explicitly write them via
forwarding function ::operator new(...)..

【在 f****4 的大作中提到】
: class Mem{
: public:
: void* operator new(size_t n, int a);
: void operator delete(void* p);
: };
: Mem* a = new(10) Mem;
: a->~Mem();
: delete a;
: // operator new & delete work correctly
: void* buf = malloc(sizeof(Mem)+sizeof(int));

1 (共1页)
进入JobHunting版参与讨论
相关主题
c interview question怎么在main()函数里面free我malloc()的空间
问个算法题c++ 问题
菜鸟问个C++的pointer问题一般电面C++会问到什么专业问题?
计算组合数C(m,n)memory leaking问题都从那些方面入手查找原因?
c++ new的一个问题一道 C++ 的题。
Placement new的一个问题bloomberg电面
大家新年好。 请教一个 c interview question (转载)菜鸟求救 请大家看看我的代码有没有问题
bloomberg onsiteC++相关的面经
相关话题的讨论汇总
话题: mem话题: new话题: operator话题: void话题: buf