C++ 学习 new

原创 2015年11月18日 21:11:47

new 还有一种形式是布局new ,

 int buffer2 = new int [10];
 int * p4=new (buffer2) int [20];`

则 以p4为首地址的数组,会使buffer2的为首地址的内存块
placement new操作符使用的是静态内存,而不是动态分配的内存。这就意味着,不能用delete操作符来对它进行内存释放

当两个new出来的内存是根据同一个类型的首地址分配的,那么他们指向的是同一块存储单元。不会出现一个被挤走的情况

#include <iostream>
#include <new>

using namespace std;

int main()
{
    int * a = new int[10];
    int * b = new (a) int [20];
    int * c = new (a) int [20];

    b[0] = 1;
    cout<<b[0]<<endl;
    c[0] = 22;
    cout<<b[0]<<endl;
}

结果是 1 22;

相关文章推荐

C/C++日常学习总结(第二篇)结构体和类的大小及区别&为什么是new一个对象而不是malloc

1.大家在定义一个动态

改善C++ 程序的150个建议学习之建议33:小心翼翼地重载operator new/ operator delete

建议33:小心翼翼地重载operator new/ operator delete 虽然C++标准库已经为我们提供了new与delete操作符的标准实现,但是由于缺乏对具体对象的具体分析,系统默认提...

学习c/c++之operator new(仅供参考)

operator new   function void* operator new (std::size_t size) throw (std::bad_alloc); void* oper...

Effective c++ 条款16学习笔记: 成对使用new和delete时要采取相同形式

User the same from in corresponding uses of new and deletes 条款16:User the same from in correspond...

鲜为人知的C++中关键字new的三种使用方式 (整理在此 方便学习)

1. 普通new 也就是我们经常使用的new 形式如下: int *p1=new int; // 注意此处 不可以用指针是否为空判断分配空间是否成功 分配失败抛出异常 //...
  • bjtbjt
  • bjtbjt
  • 2011年08月26日 19:17
  • 4559

改善C++ 程序的150个建议学习之建议31:了解new_handler的所作所为

建议31:了解new_handler的所作所为 在使用operator new申请内存失败后,编译器并不是不做任何的努力直接抛出std::alloc异常,在这之前,它会调用一个错误处理函数(这个...

改善C++ 程序的150个建议学习之建议29:区分new的三种形态

建议29:区分new的三种形态 C++语言一直被认为是复杂编程语言中的杰出代表之一,不仅仅是因为其繁缛的语法规则,还因为其晦涩的术语。下面要讲的就是你的老熟人—new:它是一个内存管理的操作符,能够...

改善C++ 程序的150个建议学习之建议21:尽量用new/delete代替malloc/free

建议21:尽量用new/delete代替malloc/free 在C语言中,我们已经熟悉利用malloc/free来管理动态内存,而在C++中,我们又有了新的工具:new/delete。你不禁会产生...

改善C++ 程序的150个建议学习之建议34:用智能指针管理通过new创建的对象

建议34:用智能指针管理通过new创建的对象 前面的建议中我们不厌其烦的一再重复:内存泄漏是一个很大很大的问题!为了应对这个问题,已经有许多技术被研究出来,比如Garbage Collection(...

改善C++ 程序的150个建议学习之建议30:new内存失败后的正确处理

建议30:new内存失败后的正确处理       应该有很多的程序员对比尔•盖茨的这句话有所耳闻:对于任何一个人而言,640KB应当是足够的了。(640K ought to be enough fo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 学习 new
举报原因:
原因补充:

(最多只允许输入30个字)