C语言练习笔记 ~ 内存管理5 ~ 堆、栈和内存映射

每个线程都有自己专属的栈(stack),先进后出(LIFO)
栈的最大尺寸固定,超出则引起栈溢出
变量离开作用范围后,栈上的数据会自动释放
堆上内存必须手工释放(C/C++),除非语言执行环境支持GC
如果明确知道数据占用多少内存或者数据很小就用栈。
如果是需要大量内存或者不确定需要多少内存就用堆。
C语言练习笔记 ~ 内存管理5 ~ 堆、栈和内存映射下面是一个示例:

C语言练习笔记 ~ 内存管理5 ~ 堆、栈和内存映射

栈的实现原理

C语言练习笔记 ~ 内存管理5 ~ 堆、栈和内存映射
int abc(int a, int b) //c语言的形参是从右到左入栈的,b先入栈,a后入栈

示例如下:
C语言练习笔记 ~ 内存管理5 ~ 堆、栈和内存映射