码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-02-21 22:39:57      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:ack   stack   block   最大值   就会   虚拟地址   一个   src   技术   

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

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

  • 栈的概念
    技术图片

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

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

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

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

标签:ack   stack   block   最大值   就会   虚拟地址   一个   src   技术   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!