new & malloc()
来源:互联网 发布:iphone软件更新后闪退 编辑:程序博客网 时间:2024/06/05 11:37
new 是一个运算符,是在编译的时候可以确定数据类型, 所以,new需要关心操作对象的数据类型,调用该类型的初始化函数。
malloc()是一个函数,是在运行的时候起作用, malloc()函数只关心内存大小参数,至于这个内存放置什么数据结构,malloc()不关心.
由于new 和 malloc() 的特性,决定了在对象初始化方面的不同用处.
在more effective c++中,想必大家看到过这样的说法,operator new() 和 new operator 不是一个概念,
operator new() 是函数调用, 可以被重载, 它的完整形式是 void * operator new(size_t cb);
new operator 字面意思说啊,这个new是一个运算符。由c++编译器来解释它的丰富含义,实际上,它的丰富含义就是: 调用前面的 void * operator new(size_t cb)来分配一个空间,再用返回的这个指针值作为参数来调用对象的构造函数,使用__thiscall调用约定, this的值就是这个地址指针,通过ecx来传递的(vc++编译器)。
你可以重载void * operator new (size_t cb); 你设置可以给特定的类定义各自的内存分配函数void * operator new (size_t cb);
比如说:
另外还有一种叫做 replacement new, 就是程序自己来分配一个空间(比如说在栈上),然后将这个指针交给 replacement new 来调用构造函数,进而进行对象初始化。使用方式:
- new & malloc()
- malloc/new
- new & malloc
- new malloc
- new/malloc
- malloc && new
- New Malloc
- new malloc
- malloc new
- malloc以及malloc和new
- malloc new 和 opeartor new
- new,malloc和::operator new
- malloc和new区别
- new Vs malloc
- malloc and new
- malloc和new区别
- new 和 malloc
- malloc与new
- bqy文档如何与jsp页面互相会话传值
- bqy文档如何与jsp页面互相会话传值
- XmlHttp对象
- java术语(PO/POJO/VO/BO/DAO/DTO)
- JS
- new & malloc()
- 打算学习微软的SSIS,并编写学习日志
- SAX轻松入门(二)--带验证的SAX解析
- SOA简介
- 搜商(人类的第三种能力)
- 猫叫,老鼠逃跑,主人惊醒--答案
- 开博感言
- .netframework游戏编程入门——模拟魔兽学院永远的羁绊
- The fucking TInt64