c++中new是什么意思

如char*ch=newchar[sizeof(str)]中的newchar[sizeof(str)]是什么意思... 如 char *ch= new char[sizeof(str)] 中的new char[sizeof(str)]是什么意思 展开
 我来答
随便什么名啦啦
2020-04-30 · TA获得超过6987个赞
知道答主
回答量:18
采纳率:0%
帮助的人:5250
展开全部

C++中new运算符用于动态分配和撤销内存的运算符。

new运算符使用的一般格式为new 类型 [初值]。

用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。 

一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间。申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是所谓的“定位放置new”(placement new)操作。

扩展资料:

1、用定位放置new操作,既可以在栈(stack)上生成对象,也可以在堆(heap)上生成对象。如本例就是在栈上生成一个对象。

2、使用语句A* p=new (mem) A;定位生成对象时,指针p和数组名mem指向同一片存储区。所以,与其说定位放置new操作是申请空间,还不如说是利用已经请好的空间,真正的申请空间的工作是在此之前完成的。

3、使用语句A *p=new (mem) A;定位生成对象是,会自动调用类A的构造函数,但是由于对象的空间不会自动释放(对象实际上是借用别人的空间),所以必须显示的调用类的析构函数,如本例中的p->~A()。

4、万不得已才使用placement new,只有当你真的在意对象在内存中的特定位置时才使用它。例如,你的硬件有一个内存映像的I/O记时器设备,并且你想放置一个Clock对象在哪那个位置。

参考资料:百度百科-new

gongxinheng
推荐于2016-07-09 · 知道合伙人软件行家
gongxinheng
知道合伙人软件行家
采纳数:55 获赞数:380
6年游戏开发经验。曾在多个MMO PC游戏以及手游项目担任主程。 目前在美国华盛顿州立大学留学并参与研究项目

向TA提问 私信TA
展开全部
  new一般表示创建一个类的对象(实例),返回该类对象的指针。

  假设我们有class C{}; 要创建一个C类的对象(实例),主要有两种方式。一个是用 C obj; 直接定义。这种方式定义的对象内存是在栈上(静态内存)分配的。另一种方式是定义一个类的指针然后用new来创建该对象并返回需要的指针地址。这种方式是用 C* obj = new C(); 此方式分配的内存是在堆上。
  堆和栈的区别请参考:
  http://zhidao.baidu.com/link?url=Ht_4FBs3thaAo_zb_2Ne4_a8AM8mZtyGKAJPYuXQolu-xBp4LMielDR3AnhJoJPR84TUzaCwZYcxDzEMX0xkIa

  另外,new C()会调用C类的无参构造函数。通过new C(...)传入不同的参数可以调用对应的C的构造函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5762a4b
推荐于2018-03-20 · TA获得超过413个赞
知道小有建树答主
回答量:415
采纳率:0%
帮助的人:391万
展开全部
动态申请内存空间,那句话的意思就是申请一个大小与str字符串常量大小相同的字符数组。c++中new出来的要用delete删除。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiangzi0008
2012-04-14 · 超过10用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:28.5万
展开全部
在堆栈上动态创建一个存储空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
123but123
2012-04-14 · 超过18用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:32.3万
展开全部
动态分配内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式