new 的一些点 的 学习

转载 2012年03月22日 10:54:27

转载:http://apps.hi.baidu.com/share/detail/46283625

new的第三种形态——placement new是用来实现定位构造的,因此可以实现new operator三步操作中的第二步,也就是在取得了一块可以容纳指定类型对象的内存后,在这块内存上构造一个对象,这有点类似于前面代码中的“p->A::A(3);”这句话,但这并不是一个标准的写法,正确的写法是使用placement new:
[Page]
#include <new.h>

void main()
{
   char s[sizeof(A)];
   A* p = (A*)s;
   new(p) A(3); //p->A::A(3);
   p->Say();
}
对头文件<new>或<new.h>的引用是必须的,这样才可以使用placement new。这里“new(p) A(3)”这种奇怪的写法便是placement new了,它实现了在指定内存地址上用指定类型的构造函数来构造一个对象的功能,后面A(3)就是对构造函数的显式调用。这里不难发现,这块指定的地址既可以是栈,又可以是堆,placement对此不加区分。但是,除非特别必要,不要直接使用placement new ,这毕竟不是用来构造对象的正式写法,只不过是new operator的一个步骤而已。使用new operator地编译器会自动生成对placement new的调用的代码,因此也会相应的生成使用delete时调用析构函数的代码。如果是像上面那样在栈上使用了placement new,则必须手工调用析构函数,这也是显式调用析构函数的唯一情况:
p->~A();
当我们觉得默认的new operator对内存的管理不能满足我们的需要,而希望自己手工的管理内存时,placement new就有用了。STL中的allocator就使用了这种方式,借助placement new来实现更灵活有效的内存管理。

《统计学习方法》的一些点

统计学习方法的一些点一、统计学习方法概论统计学习方法的三要素:模型、策略、算法模型模型就是所要学习的条件概率分布或决策函数。其中决策函数标识的模型为非概率模型,由条件概率表示的模型称为概率模型。策略损...

学习 Android Application Security Series 时需要注意的一些点

最近想扩展学习下 Android 应用安全,找到一份入门指引  ,大概走了一遍,有一些注意的点且记下。 1. 建议下载的 Appie 版本为 2.0,因为作者写这些文章时用的是2.0 版本,亲试使...

MySQL小误区:关于set global sql_slave_skip_counter=N 命令的一些点

背景知识1:     在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=N以跳过命令。常用...

PID应用时要注意的一些点

用PID好多次了,用来做过智能车,用来做过四轴.PID不难理解,不难应用,网上也有许多介绍PID的帖子文章什么的,有介绍原理公式的,有讲怎么调节的,资料特别多,我就不写那些陈腔滥调了,我写点感觉网上大...

关于手机输入法的一些点子

手机是android系统的索爱mt15i,试用了搜狗、qq、百度这些输入法后,最终选择了触宝输入法,最主要是因为它有滑行输入法,写起英文单词很爽,哪怕你中间有几个字母记不清了,在键盘上一通乱划,输入法...
  • viggin
  • viggin
  • 2012年03月14日 15:05
  • 2950

面试的一些点

今天在知乎上看到了一哥们,技术大牛吧,分享的东西,于是就记录了一下以下为正文这几天比较忙。加个插曲。 前两天面试了一个四年工作经验的Java工程师,挺失望的。工作换了四五家,大多浅尝则止,基础太差了...

转:在华为的工作体验,可以get一些点(仅自娱自乐)

华为这家企业对学历要求很高,.你培训的再好.也要看学校的. 目前华为刚刚涨薪,本科生月薪8K -10K 硕士 9K -11K 但是很难进.几乎不招本科生.如果你有N年工作经验也可以社招进去. 同时.我...

QCom MSM MDP显示驱动一些点的简记

简要记录了Qualcom MSM8xxx MDP Framebuffer驱动中的一些点。 Framebuffer设备的sysfs 330static int msm_fb_create_sysfs...

关于scanf()函数的一些点~

一: #include #include #include #include int main(void) { int num1,num2; char ch1,ch2,ch3; ...

java编程中影响性能的一些点

本次迭代,在做一些代码的优化和重构,网上整理的一篇文章,推荐大家看看,平常编码中加以应用,红色标注的点是我认为在现在的项目开发中需要特别注意的,有不同意见的点欢迎大家一起讨论。原文地址:http://...
  • cpzhong
  • cpzhong
  • 2011年07月12日 19:13
  • 1930
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:new 的一些点 的 学习
举报原因:
原因补充:

(最多只允许输入30个字)