Net*_*ire 0 c++ malloc operator-overloading visual-studio-2010
我写了我的malloc实现(让它调用mymalloc(size_t)),收集其他信息并将其保存到列表中.现在我需要重载operator new以使其工作mymalloc(size_t),而不是malloc(size_t).在VS2010中我发现了这个实现operator new:
void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)
{ // try to allocate size bytes
void *p;
while ((p = malloc(size)) == 0)
if (_callnewh(size) == 0)
{ // report no memory
static const std::bad_alloc nomem;
_RAISE(nomem);
}
return (p);
}
Run Code Online (Sandbox Code Playgroud)
请参阅:placement new此代码中没有!然后我的问题是:如何过载operator new与mymalloc内存分配函数,使其调用构造函数?
operator new()(和operator new[]())的工作是提供指向可以构造对象的内存的指针.这些运算符不会为正在构造的对象调用任何构造函数.事实上,他们甚至不知道分配内存的确切类型:即使特定于类的特定operator new()类型,它也将与派生类型一起使用.
注意,您还需要重载/替换相应的operator delete()和operator delete[]().
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |