堆/栈/静态存储区

栈:【函数调用】
函数中形参和局部变量存储在栈上。
栈在程序中用于维护函数调用的上下文,保存了一个函数调用所需要维护的信息。
函数调用栈上的数据,当函数调用时,对应的栈空间在函数返回前是专用的(即此时不能被其余函数访问),在函数调用结束之后,栈空间将被释放,数据不再有效。
注意:函数调用结束之后,栈空间释放。故局部变量中的指针和地址是禁止作为返回值的。(指针和地址通过变异之后,一般都关联了一个特定的内存,当函数调用结束之后,这段内存也会消失,接受了局部变量中的指针和地址的变量也就无法再找到这段内存)。

堆:【内存动态申请和归还】
堆是程序中一块预留的内存空间,给程序员自由支配。
堆中被程序申请使用的内存在主动释放前都是一直有效的
获取堆:malloc,释放堆free。

静态存储区:【全局变量和静态变量】
主要保存全局变量和静态局部变量,其生命周期直到程序运行结束。
其大小在编译期间就确定,且随着程序的运行而分配空间信息最终会保存到可执行程序中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章