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

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

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

  • 栈的概念
    image

  • 栈溢出(Stack Overflow)

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

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

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

原文地址:https://www.cnblogs.com/xiaobaizzz/p/12343266.html