内存管理:栈(stack) 和 栈溢出

Posted xiaobaizzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理:栈(stack) 和 栈溢出相关的知识,希望对你有一定的参考价值。

程序的虚拟地址空间分为多个区域,栈是其中地址较高的一个区域。

栈可以存放函数参数、局部变量、局部数组等作用范围在函数内部的数据,它的作用就是完成函数的调用。

  • 栈的概念
    技术图片

  • 栈溢出(Stack Overflow)
    • 对于每个程序来说,栈能使用的内存是有限的,一般是1M - 8M,这在编译时就已经决定了,程序运行期间不能改变。
    • 如果程序使用的栈内存超出最大值,就会发生栈溢出错误。

      一个进程可以包含多个线程,每个线程都有自己的栈,严格来说,栈的最大值是针对线程来说的,而不是针对进程。

    栈内存的大小和编译器有关,编译器会为栈内存指定一个最大值。

以上是关于内存管理:栈(stack) 和 栈溢出的主要内容,如果未能解决你的问题,请参考以下文章

5C_数组&字符串&结构体&共用体&枚举

JAVA内存管理与垃圾回收

Linux堆内存管理深入分析 (上半部)

Linux Kernel Stack

内存管理之栈

深入理解java虚拟机---java虚拟机内存管理