2 hchchc6016 hchchc6016 于 2016.04.13 20:59 提问

c++中关于new操作符的一些疑问

这个是上课时候的PPT,求大神讲一讲中间一段代码什么意思,他想说明什么图片

4个回答

VisualEleven
VisualEleven   Ds   Rxr 2016.04.14 16:43
已采纳

placement new

3.1 有时候你真的会想直接调用一个构造函数,针对一个已经存在的对象调用其构造函数,并无意义,因为构造函数用来对象初始化,而对象只能初始化一次。但是你偶尔会有一些分配好的原始内存,你需要在上面构建对象,有一个特殊的地方 operator new 称为placement new,允许这么做。

例如:

class Widget { public: Widget(int widgetSize); ...... };

Widget* constructWidgetInBuffer(void*buffer,int size) { return new (buffer) Widget(size); }

此函数返回指针,指向一个Widget object,它被构造于传递给此函数的一块内存缓存区上。当程序运行到共享内存或者内存I/O映射。这类函数可能是有用的,因为在那样运用中,对象必须置于特定的地址,或者置于特殊函数分配出来的内存上。

CSDNXIAOD
CSDNXIAOD   2016.04.13 21:03

new操作符
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

mearsedy
mearsedy   2016.04.13 21:21

第二行是用buffer指向了 s 的首地址
第三行是创建一个string对象,对象中的属性值是“Hi”放入buffer所指地址处。

beifengche
beifengche   2016.04.14 15:57

讲的是new 可以使用栈上的内存,而不是在堆上。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++:new运算符和new表达式详解
摘要:在C++中new是一个行为和语法都有点诡异的结构,它的语法上与其它C++语法不同,它在语义上却也经常引起人们的不解,尤其当用户自定义的new在使用的时候。本文试图回答作者在学习new的时候遇到的问题,同时这些问题也可能是大多数人首先遇到的问题。 目录 [隐藏] new 关键字 new 运算符 new 表达式 new 关键字 new是C++的关键字,它不仅仅
H5面试题---new操作符具体干了什么呢
new操作符具体干了什么呢? (1)创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。 (2)属性和方法被加入到 this 引用的对象中。 (3)新创建的对象由 this 所引用,并且最后隐式的返回 this 。
C++学习笔记:关于C++类与动态内存分配中布局new操作符
C++学习笔记:关于C++类与动态内存分配中布局new操作符
C语言中的malloc/free与C++中的new/delete的区别
c++面试的时候,一般会有这样一道基本题:《C语言中的malloc/free与C++中的new/delete的区别》。 个人觉得没啥意思,因为一般c++程序员都懂,不过要每个点都回答上也不容易(主要是平时不会刻意去总结)。 本文对此作了总结。
new和delete、malloc和free之间的异同点以及用法实例
// new和delete.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; class Test{ public: Test(int _a){ a = _a; cout << "构造函数被执行" << endl; } ~Test(){ cout << "析构函数被执行" <
c++ new 运算符做了什么
new 运算符 创建并且初始化具有动态存储期的对象。 Explanation new所做的工作: 分配内存空间在分配的内存空间里,构造和初始化一个没有名字的对象,或者一个没有名字的对象数组。new表达式返回的是一个右值指针,指针指向的是分配空间的其实地址。 对于创建数组类型,所有的维度(除了第一个维度)必须是正的,类型std::size_t 的converted constant e
理解js中的new操作符。
转自:http://blog.csdn.net/motian06/article/details/8258942 http://coolshell.cn/articles/6441.html new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在Javascript中,我们将这类方式成为Pseudo
我遇到的一些问题的解决答案,有关于操作系统中的
:什么是中断? A:中断嘛,举个容易理解的例子吧。 比如莲莲和唐唐在下象棋,眼看莲莲就快招架不住了,正当此紧要关头,唐 唐的女友来了,非要唐唐陪她上街买衣服不可(唐唐晕倒:-) ),于是唐唐 不得不同莲莲商量,先把棋盘封了,待买完衣服后继续战斗。掌灯时分,唐 唐带着满脸疲惫回到了棋盘前,结果莲莲不费吹灰只力便反败为胜。 这就是整个中断过程。我们来看看中断过程是如
js中使用new操作符做了什么事情
js中使用new操作符做了什么事情
[JS] new操作符
本文转载自thinker_creator《[JS] new操作符》 一. new是干嘛的? new操作符用来生成一个新的对象, 它后面必须跟上一个函数(否则, 会抛出TypeError异常), 这个 函数就是我们常说的构造函数. 二. new操作构造函数生成实例的过程 (1) 首先, 当我们使用new操作符时, js会先创建一个空的对象;