Effective C++ Placement new

时间:2022-12-13 18:20:14
 #include <iostream>
#include <cstdlib> using namespace std; class Card {
private:
int m_SerialNumber;
public:
Card(int id) : m_SerialNumber(id) {}
~Card() {cout<<"~Card"<<endl;}
void print() {cout<<m_SerialNumber<<endl;}
}; int main() {
int num = ;
void *rawMemory = operator new[](num * sizeof(Card));
Card *cards = static_cast<Card*>(rawMemory); for (int i=; i<num; i++) {
new(&cards[i]) Card(i+);
} for (int i=; i<num; i++) {
cards[i].print();
} for (int i=num-; i>=; i--) {
cards[i].~Card();
}
operator delete[](rawMemory);
system("pause");
return ;
}

这么奇葩的操作。

operator delete[] 只能对由对应 operator new[] 得到的空间指针变量操作,不能直接对cards指针使用

Effective C++ Placement new的更多相关文章

  1. Effective C&plus;&plus; -----条款52:写了placement new 也要写 placement delete

    当你写一个placement operator new ,请确定也写出了对应的placement operator delete.如果没有这样做,你的程序可能会发生隐微而时断时续的内存泄漏. 当你声明 ...

  2. 读书笔记 effective c&plus;&plus; Item 52 如果你实现了placement new&comma;你也要实现placement delete

    1. 调用普通版本的operator new抛出异常会发生什么? Placement new和placement delete不是C++动物园中最常遇到的猛兽,所以你不用担心你对它们不熟悉.当你像下面 ...

  3. 《Effective C&plus;&plus;》第三版笔记

    阅读此笔记前,请先阅读 <Effective C++>第二版笔记  和  <More Effective C++>笔记 这里只记录与上面笔记不同的条款,主要是 "面对 ...

  4. 浅谈new operator、operator new和placement new 分类: C&sol;C&plus;&plus; 2015-05-05 00&colon;19 41人阅读 评论&lpar;0&rpar; 收藏

    浅谈new operator.operator new和placement new C++中使用new来产生一个存在于heap(堆)上对象时,实际上是调用了operator new函数和placeme ...

  5. 阅读《Effective C&plus;&plus;》系列

    <Effective C++>条款07:为多态基类声明virtual析构函数 这样做主要是为了防止内存泄漏,见我hexo博客. C++的虚析构函数 <Effective C++&gt ...

  6. 《Effective C&plus;&plus;》读书摘要

    http://www.cnblogs.com/fanzhidongyzby/archive/2012/11/18/2775603.html 1.让自己习惯C++ 条款01:视C++为一个语言联邦 条款 ...

  7. More Effective C&plus;&plus; &lpar;1&rpar;

    简单分析总结了more effective c++ 的前十个条款: 剩下的条款to be continue~ 1.仔细区分指针和引用引用必须不能指向空,指针可以指向空,指针初始化是记得赋空值,重载某些 ...

  8. Effective C&plus;&plus; 的55个条款

    看完Effective C++才觉得平时程序设计时需要注意的一些问题,有一定的收获,不过因为没什么项目实践, 并未很深入了解具体情况如何,还需后继实践~ 列举一下55个条款: 1. 视C++为一个语言 ...

  9. Effective c&plus;&plus; 小结

    来源:http://www.cnblogs.com/feisky/archive/2009/11/04/1595990.html 最近又重新看了Effective C+,不过到现在还是有好多地方不懂的 ...

随机推荐

  1. C&plus;&plus;多重继承带来的问题

    首先上图,咱们看图说话!   橙色表示变量,使用private修饰. 如图,假设Person类的变量name只能通过input方法来输入. 那么继承自Person的Student及Teacher类中s ...

  2. C&plus;&plus;对象模型:单继承,多继承,虚继承

    什么是对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分.对于各种支持的底层实现机制. 类中成员分类 数据成员分为静态和非静态,成员函数有静态非静态以及虚函数 clas ...

  3. hdu 4296 贪心

    证明转自:  here 题意:有 n 个地板,每个地板 i 有两个权值 Wi, Si,且 PDV(i) =  (ΣWj) - Si ( j 表示在 i 上面的地板).问如何调整顺序,使得[max(PD ...

  4. mysql数据库中某项其中一个值在该项排第几&comma;百分几

    SQL 如下: sql 1. SELECT X.USER_ID, X.TOTAL_NO, X.ORDER_NO, X.ORDER_NO / X.TOTAL_NO AS PERCENTAGE_NO AS ...

  5. wcf 请考虑增加操作超时

    发送到 net.tcp://192.168.1.18:8732/CallbackService 的请求操作在配置的超时(00:00:59.9879994)内未收到回复. 分配给此操作的时间可能已经是更 ...

  6. hdu3849-By Recognizing These Guys&comma; We Find Social Networks Useful:双连通分量

    By Recognizing These Guys, We Find Social Networks Useful Time Limit: 2000/1000 MS (Java/Others)     ...

  7. c&num; 如何显示图片指定位置

    private void panel1_Paint(object sender, PaintEventArgs e) { Rectangle r1 = new Rectangle(0, 0, 100, ...

  8. HttpReponse

    属性: django将请求报文中的请求行.头部信息.内容主体封装成 HttpRequest 类中的属性.   除了特殊说明的之外,其他均为只读的. 0.HttpRequest.scheme   表示请 ...

  9. SSM-网站前台博客系统制作(1)---前台&plus;Google的Kaptcha

    前提: 1天半时间简单自己手写了一下前端布局和后台验证码的基本工作,简要说明一下遇到的问题和收获吧. 这次基本就是前台设计(首页)+Kaptcha图片验证码(之前弄了一个reCaptcha验证码 但是 ...

  10. python中split&lpar;&rpar;和split&lpar;&&num;39&semi; &&num;39&semi;&rpar;的区别

    用split(" ")测试: s1 = "we are family"#中间一个空格 s2 = "we are family"#中间两个空格 ...