您的位置:首页 > 其它

动态变量和静态变量的区别,堆和栈的区别

2012-02-25 10:10 260 查看
动态变量和静态变量的区别:

1、存储位置
动态变量:存储在内存出栈数据区
静态变量:存储在全局数据区(静态数据区)


2、生命期
动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效
静态变量:程序结束时才释放


3、作用域
动态变量:同样的要根据你定义的位置才能确定,和第二点的一样
静态变量:当前文件中有效


堆和栈的区分:

分配方式:堆都是动态分配的,没有静态分配的堆。

栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由alloca(),alloca的函数返回的时候,它分配的内存会自动释放,但是栈的动态分配和堆是不同的,堆需要手动释放。

堆是通过new,malloc,calloc,realloc等来分配的内存,需要手动析构,栈由系统管理,无需人为处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: