C++中new的用法

具体参考 《C++之 new 》http://www.cnblogs.com/yzy6806555/archive/2013/02/24/2924571.html
在 C++ 中new有两种身份,一种是关键字,身份与sizeof等同,内置的;另外一种是函数。

1. new作为关键字是最常见的用法。
Class* ptr = new Class("rui");
这句话会完成两个功能:
a)调用operator new为类分配空间
b)调用Class的对应的构造函数(例子中有参数)。
在第二个过程中,如果发生异常(如读取丢失文件),那么可能会发生内存泄露。所以Symbian中有
两段构造的解决方案(具体请google一下)。
 
2. new作为函数不太常用,也不推荐使用。主要有两种用法
1) 为类分配内存,其函数声明为
void *operator new(size_t size);
之前介绍的只在栈上生成对象就是声明类的new函数为private。
其为 关键字new的第一个调用过程。new函数返回的是一个void指针,一块未经初始化的内存
2)在已有的内存上(可以是堆内存或栈内存)分配对象,也称为placement new。其声明为
void* operator new (std::size_t size, void* ptr) throw();
可以看到其只是operator new 的一个重载版本 (多了个参数)。
其会调用类的构造函数,初始化内存,作为关键字new的第二个过程。
placement new主要适用于:
a)在对时间要求非常高的应用程序中,因为这些程序分配的时间是确定的;
b)长时间运行而不被打断的程序;
c)以及执行一个垃圾收集器 (garbage collector)。

原文链接: https://www.cnblogs.com/westfly/archive/2013/05/02/3054001.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中new的用法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86785

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午10:47
下一篇 2023年2月9日 下午10:47

相关推荐