MyC++之浅谈堆栈
来源:互联网 发布:博拉网络是做什么的 编辑:程序博客网 时间:2024/05/17 23:36
提到堆栈,说白了就是存储空间,都是内存的一部分,还记得当时学汇编是有个堆栈段来着,用来存储中断和调用函数时当前信息。那当然会对堆栈有种膜拜的情感,因为它可谓是操作系统一个核心,凭借的就是它的这种数据结构(后进先出等等)。
所以不管多大的程序,main函数一定是在栈底,当调用子函数时,先入栈的是参数,然后再是函数地址,中间就是函数里面的局部变量。这样就构成了函数的一个活动记录,在函数返回时活动记录就被销毁了。这就让我想起了C语言中所谓的单向传递和双向传递,还记得么?当传递进来的是变量值的时候,其实被调用函数这边会有个创建临时对象的过程,而这些临时对象则变成了传递进来变量的副本。所以也算是局部变量了、这下明了了 吧,而当参数类型是引用或指针类型时,操控的都是变量本身,当然就不会销毁了,所以当我们要传递的对象很巨大时,往往推荐用引用因为省时省资源嘛、、、何乐而不为~~~呵呵,因此,千万不能将局部对象的引用返回,道理都应该知道了吧。
在C++中用到堆最多的或许就是new和delete了,因为若要动态申请空间,则系统会在堆中开辟一段空间为我们所用,这是在运行阶段完成的,所以当然也就比静态分配的空间要灵活。既然如此,那我们只要使用动态申请空间得了?NO,什么事都有两面性,虽然说静态分配不怎么灵活,但是它快捷、省时、安全并且由系统自动控制。动态申请就不同了,它又程序员控制,所以你得时时刻刻盯着你申请的空间是否有被释放,若不注意,就容易造成内存泄露,这可是程序员的大忌也是非常不容易发现的BUG,所以养成良好的编程习惯是多么多么重要、、、
_____蜻蜓点水
- MyC++之浅谈堆栈
- MyC++之友元
- MyC++之顺序容器
- MyC++之谈函数重载
- MYC编译器源码之语法分析
- MyC++之动态绑定和静态绑定
- MYC编译器源码之词法分析
- MyC++(1)
- 浅谈堆栈问题-C++
- java堆栈浅谈
- 浅谈java中的堆栈
- 浅谈java内存堆栈
- 浅谈C/C++堆栈指引
- MyC语言练习
- MyC++基础知识补漏
- 浅谈C/C++堆栈指引——C/C++堆栈
- uc/os-ii操作系统堆栈浅谈
- 堆区和堆栈的浅谈
- RuntimeException
- LoadRunner录制脚本时报加载GrooveUtil.dll出错的解决方法
- 关于调用qsort的几种用法
- Fedora 15下配置安装openvpn server
- PHP安全习惯1
- MyC++之浅谈堆栈
- PHP安全习惯2
- 正则表达式(regex)及C语言实现,超强查找/匹配/替换算法
- 使用commons-dbutils简化JDBC操作(一)
- C/C++ 声明与定义
- iphone下self用法
- PHP安全习惯3
- 使用commons-dbutils简化JDBC操作(二) dbutils+反射
- Cookie使用utf-8编码显示