2.堆.栈和内存映射详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.堆.栈和内存映射详解相关的知识,希望对你有一定的参考价值。
1.每个线程都有自己专属的栈(stack),先进后出(LIFO)
2.栈的最大尺寸固定,超出则引起栈溢出
3.变量离开作用范围后,栈上的数据会自动释放
4.堆上内存必须手动释放(C/C++)除非语言执行环境支持GC
5.栈还是堆?
--明确知道数据占用多少内存
--数据很小
--大量内存
--不确定需要多少内存
举个例子
值得注意的是list_buf这个指针变量是在栈区,二list_buf这个指针指向的内存在堆区,还有函数的参数也是在栈区,而且是从右往左入栈
详细过程如下,值得注意的是,函数的参数如果是引用传递,先在栈区创建一个变量,占四个自己,但指向了一个堆区的内存.
静态区的值是一直不动的,而栈区的值是不断变化的.
下面我们在linux下演示一下:
以上是关于2.堆.栈和内存映射详解的主要内容,如果未能解决你的问题,请参考以下文章
win32day13-地址空间/地址映射/虚拟内存/堆内存/内存映射文件