1 说明
new:(1) 一种运算符(malloc是一种c中的库函数)
(2) 先分配对象(operator new)再构造对象,一般用于满足自定义的类类型
2 原型
原型: void * operator new(size_t) throw(bad_alloc)
解释:该函数的返回值是一个void*指针,同时有可能会抛出bad_alloc的异常
3 分析
分析new,且看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) //调用new_handler
{ // report no memory
static const std::bad_alloc nomem;
_RAISE(nomem); //抛出异常
}
return (p);
}
解释:
(1)函数框架与原型2一致
(