今天刊师兄问了个问题,下面这个语句是什么意思:
(void) new (&data[i]) Package(*this, bus.get_channel(i), PACKAGE_SIZE, PACKAGE_SIZE*DIE_SIZE*PLANE_SIZE*BLOCK_SIZE*i);
其实这个是new的一种用法:placement new。
new 一共有3种用法:
1.new operator是我们经常使用的new,它的内部相当于实现了三步操作:分配内存、调用构造函数、返回地址指针。A* a= new A; 分配失败会抛出异常,如果不想抛出异常则可以使用A* a=new(std::nothrow) A
2.operator new可以看做运算符,可以重载,重载它可以做内存分配前后的一些工作。A* t3=(A*) operator new(sizeof(A));
3.palcement new. palcement new是在已分派的内存上调用构造函数。 new(a) A;
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于