C++ 内存基本构件 placement new
生活随笔
收集整理的这篇文章主要介绍了
C++ 内存基本构件 placement new
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
用法以及编译器解释
placement new 允许我们将object构建于已经分配的内存上。(所以此时必须有个指针指向已经分配好的内存)
没有所谓的placement delete ,因为placement new根本没有分配内存.
也有种说法,是将placement new对应的内存释放掉的操作为placement delete。
被编译器转为:
Complex *pc; try{1、void mem = operator new(sizeof(Complex),buf); //在顶点内存2、pc = static_cast<Complex*>(mem); //转型3、pc->Complex::Complex(1,2); //调用构造函数 } catch(std::bad_alloc){//若allocation失败就不执行构造函数 }pc、buf指向同一个地方。
关于operator new,此处用的函数与之前提到的函数有点不一样:https://blog.csdn.net/qq_42604176/article/details/111638568
这里的用法为:
你传递分配好的内存给它,它什么都没做,将地址返回。
于是我们可以总结,placement new就是调用了构造函数。
注意,这三种写法是一致的:
总结
以上是生活随笔为你收集整理的C++ 内存基本构件 placement new的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 1080×1920分辨率超过2m吗?
- 下一篇: C/C++代码优化方法