首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c++delete什么意思_deletedelete()

一直对C++中的deletedelete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。...C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。...[] p1; delete p1; T* p2 = new T[NUM]; cout << p2 << endl; delete[] p2; } 大家可以自己运行这个程序,看一看 delete...基本类型的对象没有析构函数,所以回收基本类型组成的数组空间用 deletedelete[] 都是应该可以的;但是对于类对象数组,只能用 delete[]。...对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。 所以一个简单的使用原则就是:new 和 delete、new[] 和 delete[] 对应使用。

1K20

C++:内存管理|new和delete

C++和C的内存分布是一样的,下面根据一道面试题引入 int globalVar = 1; static int staticGlobalVar = 1; void Test() { static int...综上无论哪种情况,我们只需要释放p3就行 三、C++的内存管理模式 C语言内存管理方式在C++中可以继续使用,但是因为C++是面向对象的语言,在有些地方就无能为力,而且使用起来比较麻烦...因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。...调用operator delete[]释放空间,实际在operator delete[]中调用operator delete来释 放空间 3.3 operator new与operator delete...五、内存泄露 C++相比Java给了我们更多的对内存的操作权限,让我们可以通过对内存的了解提高程序的性能,因此我们在享受这个权限的同时,也要格外小心内存泄露的问题,对自己的行为负责。

12710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++ 中的 delete[] 机制剖析

    本文简单总结了delete[]放在析构函数中VS放在主函数中的区别(针对自己定义类)。...我个人的猜测,执行delete只是将它后面变量的地址告诉给操作系统,操作系统把它手里的那张表给改了,但delete掉的指针没有变化,还是原来指向的变量的地址值(可以做个小实验,new出来的delete后指针不会变...如果有多个对象则用delete[] ,单个对象的话直接delete。...跳到析构函数中后,如果析构函数中有delete[] 语句,则释放这个对象(即this指针指向的当前对象)所拥有的指针成员变量所占用的空间(请注意:成员变量是指针类型时才需要delete,普通的不用(其实也不能...,会报错的啦)),同理,有多个指针成员变量则用delete[] ,只有一个的话则delete即可。

    90130

    C++ delete的三种面貌

    为了避免内存泄漏,每个动态内存分配必须有与一个相反的解除分配(Deallocation)操作对应,所以C++中有new操作,那么就存在相反的delete操作,new与delete的关系,就像C语言中...malloc()与free()的关系,分别负责内存的申请与释放,只不过C++中的new与delete赋予了其它的功能。...delete的三种面貌与new的三种面貌一一对应,分别是new operator、new delete()与placement new(),关于new的三种面貌,参见博文C++ new的三种面貌。...1.delete operator delete operator是C++保留关键词,无法改变其含义,但我们可以改变delete时调用的函数operator delete()。...一个重要的原因是, C++需要placement delete()和placement new()成双成对。

    1.3K41

    C++ new 与 delete 的使用规范

    文章目录 1.new 与 delete 需一一对应 2.new[] 与 delete[] 需一一对应 3.构造函数中的 new/new[] 与析构函数的中 delete/delete[] 需一一对应...参考文献 C++ 的动态内存管理是通过 new 和 delete 两个操作来完成的,即用 new 来申请空间,用 delete 来释放空间。...p; } delete p; return 0; } 以上程序对指针p所指向的空间进行两次释放,这种内存错误对 C++ 程序危害极大,也是很多人对 C++ 忘而却步的原因。...在 C++ 中,一个构造函数不能调用本类的另一个构造函数,其原因就是为了防止构造函数的相互调用打破了内存申请与释放之间的这种对应关系。...---- 参考文献 C++高级进阶教程.陈刚.P260-264 编写高质量代码改善C++程序的150个建议.李健.P69-71

    83210

    C++对象模型_operator delete异常分析

    开发环境 VC6.0 编辑器 Cmd Markdown C++delete表达式执行的操作是:1,调用析构函数;2,释放对象内存(operator delete(…))。...当对父类的指针执行delete操作时,会调用父类析构函数,然后在释放内存时(即delete表达式执行的操作的2,释放对象内存)出现崩溃。...但是由于本程序不需要析构函数执行特殊的操作,所以delete父类指针pB同样可以释放内存,然而引起出乎意料的内//存释放异常。.../*unsigned char *pC=(unsigned char*)pB; pC=pC-4; delete pC;//这样就可以释放new Derived分配的内存,而不会发生崩溃...*/ delete pB; } 其main函数对应的汇编代码如下(VC6.0): int main() 23: { 00401060 push ebp 00401061 mov ebp,esp

    55220

    deletedelete []区别

    delete[]中的[]是要告诉c++,指向的是一个数组,如果在[]中填上了数组的长度信息,c++编译系统将忽略,并把它作为[]对待。但如果忘记了写[],则程序会产生运行错误。...delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。...在More Effective C++中有更为详细的解释:“当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operatordelete来释放内存。”...[10]; int*pInt2=newint; delete[]pInt1; //-1- delete[]pInt2; //-2- delete[]mTest1;//-3- delete[]mTest2...这就说明:对于内建简单数据类型,deletedelete[]功能是相同的。对于自定义的复杂数据类型,deletedelete[]不能互用。delete[]删除一个数组,delete删除一个指针。

    1.3K80

    deletedelete[]的区别

    一直对C++中的deletedelete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。    ...C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。...[] p1;   delete p1;   T* p2 = new T[NUM];   cout << p2 << endl;   delete[] p2; } 大家可以自己运行这个程序,看一看 delete...基本类型的对象没有析构函数,所以回收基本类型组成的数组空间用 deletedelete[] 都是应该可以的;但是对于类对象数组,只能用 delete[]。...对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。 所以一个简单的使用原则就是:new 和 delete、new[] 和 delete[] 对应使用。

    1.3K10

    C++初阶:CC++内存管理、new与delete详解

    之前结束了类与对象:今天进行下面部分内容的学习 1.C/C++内存分布 具体说明: 栈又叫堆栈–非静态局部变量/函数参数/返回值等等,栈是向下增长的。...free用于释放动态分配的内存,将其返回给系统供其他程序使用 更加详细的介绍大家可以移步于我的文章: 3.C++动态内存管理方式 C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力(...特别是关于自定义变量),因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理 在C++中,new和delete是用于动态内存管理的运算符,它们提供了对malloc、calloc...delete运算符: 功能:delete运算符用于释放由new分配的内存,并调用对象的析构函数来销毁对象。...语法:delete 指针 或 delete[] 指针,例如:delete ptr 或 delete[] arr。 返回值:无。

    27910

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券