c++ new new[]和 delete delete[] 问题
2015-11-13 20:21
351 查看
在一个类中,如果重写了new 操作符,我们是用static来修饰,因为new是在一个类被创建以前就被调用了的 我们先来看看顺序吧
new:我们开到,当调用new创建一个对象的时候,会先调用局部的new,然后交给全局的new,在全局的new中,我们使用malloc
分配内存,然后调用构造函数,所以说构造函数是给类加了一套外衣
delete:先调用析构函数,然后再是局部的delete,全局的delete,free,就是这么个过程
new[]:会调用局部new[] 然后调用局部new,然后全局new,一次性的分配内存,然后调用构造函数,全局的new[] 没有被调用
delete[]:先是析构,局部的delet[],局部的delete,全局的delete,free
这里 : 我们可以劫持内的创建过程,如果我们不在局部new中调用全局的话,且不给类分配内存的话,那么构造函数就不会被调用,也就是说我们new
不出东西了,好玩吧
new:我们开到,当调用new创建一个对象的时候,会先调用局部的new,然后交给全局的new,在全局的new中,我们使用malloc
分配内存,然后调用构造函数,所以说构造函数是给类加了一套外衣
delete:先调用析构函数,然后再是局部的delete,全局的delete,free,就是这么个过程
new[]:会调用局部new[] 然后调用局部new,然后全局new,一次性的分配内存,然后调用构造函数,全局的new[] 没有被调用
delete[]:先是析构,局部的delet[],局部的delete,全局的delete,free
这里 : 我们可以劫持内的创建过程,如果我们不在局部new中调用全局的话,且不给类分配内存的话,那么构造函数就不会被调用,也就是说我们new
不出东西了,好玩吧
相关文章推荐
- C语言之函数
- C++学习之可变参数的函数与模板
- 了解Runtime
- fgets和gets
- uva10917.cppWalk Through the Forest
- 使用Sublime Text 2编译运行C/C++程序
- 使用c++builder中stringgird控件和设定行名称和列名称的问题
- 浅谈C++容器(六)
- 浅谈C++容器(五)
- 浅谈C++容器(四)
- Poj1833 20151113
- 浅谈C++容器( 三)
- 浅谈C++容器(二)
- 浅谈C++容器(一)
- 【LeetCode-303】Range Sum Query - Immutable(c++)
- 定位new(placement new)
- C++primer--lambda表达式-参数绑定之bind
- C++实现几种排序算法
- C++实现几种排序算法
- C 编码转换 ,包括ANSI,UNICODE,UTF-8,UniBigEnd(含源码下载)