new 运算符解决方法
new 运算符C/C++ codenew 的三个版本:void* operator new (std::size_t size) throw (std::bad_alloc)voi
new 运算符
C/C++ codenew 的三个版本:void* operator new (std::size_t size) throw (std::bad_alloc);void* operator new (std::size_t size, const std::nothrow_t& nothrow_constant) throw();void* operator new (std::size_t size, void* ptr) throw();1. new是运算符,有三个版本在如此使用: int *p1 = new int( 35);的使用,调用的是哪一个版本,35是一个数字, 3个版本中没有一个版本可以传35进去2. new 是运算符,但是我们在使用的时候,new 一个对象,为什么可以做到 调用构造函数, 采用了什么机制??
[解决办法]这个 35 是初始化的 int 值, 不会传递给 operator new, 传递给 operator new 的是 sizeof(int), 也就是 4.
[解决办法][解决办法][解决办法]new运算符有3个动作:operator new申请内存,set_new_handler异常处理,调用构造函数
[解决办法]LZ可以看看stl的空间配置器的源码,然后你就知道new是怎么运行的了,大致向楼上说的那样,
第一步用alloc申请内存,验证是否成功,不成功用set_new_handler处理异常,然后调用construct()构造对象
[解决办法]楼主还是找本《effective c++》吧,认真补一下operator new和new operator的区别与联系,以及placement new