深入理解new函数(C++)

请看代码:(来自vs2005)

//new: //示例代码: int _tmain(int argc, _TCHAR* argv[]) { int *p=NULL; p= new int[10]; //单步跟进 } //到达这里: #if !_VC6SP2 || _DLL void *__CRTDECL operator new[](size_t count) _THROW1(std::bad_alloc) //这里的count已经是计算出来的所需空间大小,即4*10 { // try to allocate count bytes for an array return (operator new(count));//单步跟进 } #endif /* !_VC6SP2 || _DLL */ //到达这里 void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)//如果new int,则直接到达这里。 { // try to allocate size bytes void *p; while ((p = malloc(size)) == 0) //调用了malloc函数。 if (_callnewh(size) == 0) { // report no memory static const std::bad_alloc nomem; _RAISE(nomem); } return (p); }

new在计算了申请空间大小后调用了malloc函数完成动态空间的申请。

效率并不如malloc高。但是使用方便。不再编码计算申请空间的大小。

你可能感兴趣的:(C++,report,dll)