静态内存、动态内存以及堆栈(C++)
2015-11-07 15:20
190 查看
静态内存:用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量
栈内存:保存在函数内定义的非static变量。操作方式类似数据结构中的栈
总结:分配在上述两个内存中的对象都将由编译器自动创建和销毁。不同的是静态内存保存的对象在程序启动时被创建,程序结束时销毁,栈内存中的对象则是在程序块(函数)被调用时创建,程序块(函数)结束时被销毁。
堆内存:存储那些在程序运行时分配的对象,由程序控制其生存期,意味着手动分配一个动态内存(new操作符),手动销毁一个动态内存中的对象(delete操作符)从而释放内存。这里的堆和数据结构中的堆不同。。类似链表
注:忘记释放内存,会导致内存泄漏
PS:数据结构中的堆栈
堆:先进先出(FIFO)
栈:先进后出(FILO)
栈内存:保存在函数内定义的非static变量。操作方式类似数据结构中的栈
总结:分配在上述两个内存中的对象都将由编译器自动创建和销毁。不同的是静态内存保存的对象在程序启动时被创建,程序结束时销毁,栈内存中的对象则是在程序块(函数)被调用时创建,程序块(函数)结束时被销毁。
堆内存:存储那些在程序运行时分配的对象,由程序控制其生存期,意味着手动分配一个动态内存(new操作符),手动销毁一个动态内存中的对象(delete操作符)从而释放内存。这里的堆和数据结构中的堆不同。。类似链表
注:忘记释放内存,会导致内存泄漏
PS:数据结构中的堆栈
堆:先进先出(FIFO)
栈:先进后出(FILO)
相关文章推荐
- C++基础——使用字符串作为函数模板的实参
- C与C++中结构体的区别,C++中结构体和类的区别
- 浅谈c++ Closure与tr1::function区别
- 深入理解C++中的mutable关键字
- [01]C语言的发展史
- android studio下ndk C++开发
- [C++ Mind Map] class and memory
- C++重载与覆盖的区别
- C++输入输出简介
- C++ new 动态数组初始化
- 一些非常好的开源c++代码
- C++ 中的static关键字
- C语言/单片机基础训练之预处理指令
- C++反射机制的实现
- [C++] static member variable and static const member variable
- C语言实现分布式自增有序的唯一ID生成算法-snowflake算法
- 关于C++的STL学习
- C语言/单片机基础训练之红绿灯
- 转换字符串格式为原来字符串里字符+该字符连续出现的个数
- 今日学习札记——C语言指针与程序风格(11.6)