新闻中心

c++中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对象在哪那个位置。

  动态申请内存空间,那句话的意思就是申请一个大小与str字符串常量大小相同的字符数组。c++中new出来的要用delete删除。本回答被提问者和网友采纳已赞过已踩过你对这个回答的评价是?评论收起gongxinheng

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

  new一般表示创建一2113个类的对象(实例)5261,返回该类对象的指针。

  假设我们有4102class C{}; 要创建一个C类的对象(实例1653),主要有两种方式。一个是用 C obj; 直接定义。这种方式定义的对象内存是在栈上(静态内存)分配的。另一种方式是定义一个类的指针然后用new来创建该对象并返回需要的指针地址。这种方式是用 C* obj = new C(); 此方式分配的内存是在堆上。

  另外,new C()会调用C类的无参构造函数。通过new C(...)传入不同的参数可以调用对应的C的构造函数。已赞过已踩过你对这个回答的评价是?评论收起qiangzi0008

  在堆栈上动态创建一个存储空间已赞过已踩过你对这个回答的评价是?评论收起123but123