C++创建于销毁对象
2015-08-13 19:13
351 查看
C++将效率控制作为最重要的问题,为了最大化运行速度,通过将对象放在栈中或者静态存储区域中,存储和生命期可以在编写时确定。
栈是内存中的一个区域,可以直接由微处理器在程序执行期间存放数据。在栈中的数据称为自动变量或者局部变量。
静态存储区域简单来说是内存中的一个固定块,在程序开始执行以前分配。
使用栈或静态存储区,可以快速分配和释放。但是牺牲了灵活性,必须在写程序的时候知道对象的准确数量、生命期和类型。
在堆上动态创建对象,可以在运行的时候还不知道需要对象数目、生命期和准确数据类型。使用方法是直接使用new创建,释放时用delete。因为这种存储时动态管理的,所以在堆上分配存储的时间要比在栈上创建存储的时间要长得多。
还有一个生命期的问题:如果在栈上或者在静态存储区上创建一个对象,编译器决定这个对象持续多少长时间并能自动摧毁它。然而在堆上创建对象,编译器不知道它的生命期,在C++中,程序员必须决定何时摧毁对象,然后用delete销毁对象。
栈是内存中的一个区域,可以直接由微处理器在程序执行期间存放数据。在栈中的数据称为自动变量或者局部变量。
静态存储区域简单来说是内存中的一个固定块,在程序开始执行以前分配。
使用栈或静态存储区,可以快速分配和释放。但是牺牲了灵活性,必须在写程序的时候知道对象的准确数量、生命期和类型。
在堆上动态创建对象,可以在运行的时候还不知道需要对象数目、生命期和准确数据类型。使用方法是直接使用new创建,释放时用delete。因为这种存储时动态管理的,所以在堆上分配存储的时间要比在栈上创建存储的时间要长得多。
还有一个生命期的问题:如果在栈上或者在静态存储区上创建一个对象,编译器决定这个对象持续多少长时间并能自动摧毁它。然而在堆上创建对象,编译器不知道它的生命期,在C++中,程序员必须决定何时摧毁对象,然后用delete销毁对象。
相关文章推荐
- [转]C/C++中的memset
- C++ 类 互相包含的问题研究
- C和C++格式化输入输出
- 基本排序算法之快速排序
- VS2010 C++ 学习笔记(三) 类和对象 访问限定符 String
- c语言捕捉异常
- 二叉树的C++实现
- VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
- 【c++】字符串中找出最长的连续数字字符串
- c语言为什么要声明
- Minimum Transport Cost
- 黑马程序员———C语言———【函数指针、指针函数、野指针、内存管理、const关键字】
- C++ primer 【笔记】关联容器 set
- C/C++:内存字节对齐详解
- VS2010 C++ 学习笔记(二) 内存管理 new delete
- 【一】C++基于C的一些改变
- 位运算
- C++ 共享数据(一)静态
- C++程序中调用WebService的实现
- [LeetCode] Best Time to Buy and Sell Stock II