【C++】placement new的简单介绍
2015-05-20 00:42
253 查看
在C++中,当我们调用new来从heap中分配一块内存的时候,其实做了两步操作:
当我们需要多次重新构造某些对象,或是某些分配出来的对象可能并不会使用的时候,将分配内存和构造对象分离开来,会带来性能上的提高,这在实现一个memory pool或是garbage collector的时候会很有用。
我们可以使用
括号里的参数代表一个指针,这个指针指向一块预先分配的内存空间。
1. 调用::operator new来分配一块内存 2. 调用新分配对象的构造函数
当我们需要多次重新构造某些对象,或是某些分配出来的对象可能并不会使用的时候,将分配内存和构造对象分离开来,会带来性能上的提高,这在实现一个memory pool或是garbage collector的时候会很有用。
我们可以使用
placement new来在已有的内存上创建对象,从而减少分配内存的操作。
placement new的用法和普通的new不同,它在括号里多了个参数,像这个样子:
// pre-allocated buffer void *buf = ::operator new(sizeof(string)); // placement new string *p = new(buf) string("hi");
括号里的参数代表一个指针,这个指针指向一块预先分配的内存空间。
placement new将在这块内存空间上构造对象。
相关文章推荐
- C++多态与虚函数简单介绍
- 【C++】简单介绍虚拟继承
- c++ vector的简单介绍和使用
- 【转帖】C++中对日期和时间的处理的函数简单介绍
- C++简单介绍
- C/C++程序员:排序算法之标准C语言qsort函数简单用法介绍
- C++容器类的简单介绍
- C及C++中typedef的简单使用介绍
- C++ STL简单介绍
- C++简单学习(Part1_lecture 1)(介绍、环境设置、基本语法、注释)
- C/C++产生随机数函数简单介绍
- C++友元(Friend)简单介绍
- C++ BOOST库 条件变量[多线程通信]机制 简单介绍
- 《Effective Modern C++》翻译--简单介绍
- C++模板的简单介绍
- c++ 二维数组简单介绍
- 各类经典搜索算法(Search Algorithms)的简单介绍和C++实现
- C++ 堆与栈简单的介绍
- C++中malloc和new的区别简单介绍
- C++模板简单介绍