最近被问到了C++内存池的问题,其中不免涉及到在指定内存地址调用对象构造函数以及显示调用对象析构函数的情况。
C++中new的用法
new是C++中用于动态内存分配的运算符,在C语言中一般使用malloc函数。
(1)plain new顾名思义就是普通的new,就是我们惯常使用的new。分配内存,调用构造函数,在C++中是这样定义的:
1void*operatornew(std::size_t)throw(std::bad_alloc); 2voidoperatordelete(void *)throw();
plain new在分配失败的情况下,抛出异常std::bad_alloc而不是返回NULL,因此通过判断返回值是否为NULL是徒劳的。