引言
小编我呢是一个嵌入式方向的爱好者,C语言也是嵌入式必学语言,简单的讲讲我对C中内存相关的理解,若有不当之处,希望大家多多包涵。
作为一个优秀的码农,搞明白程序里的各个数据,以及代码是存储在哪里是很重要的,如果是找工作的友友,那么你肯定就知道堆栈,是面试官常问的问题;下面我就简单的讲讲吧,希望能对你有所帮助。
一 . 堆(heap)
1 . 由程序员分配和释放的;
2 . 这个区域用于动态内存分配;
3 . 通常使用 malloc 申请一块空间,使用完后使用 free 在将其释放。
二 . 栈(stack)
1 . 存了什么
1 . 局部变量 :函数体内的变量
2 . 函数的参数
3 . 函数的地址 :函数嵌套情况: 函数原本在正常执行过程中,调用了另外一个函数,那么他会去执行那个函数,执行完后再继续执行原本的代码,那么问题来了,cpu怎么知道,回来从哪里开始执行呢,这时就需要有一个地址记下来,而这个地址就是存储栈区的,
2 . 特点
先进后出 : 特点很简单,大家如果记不住可以把他想象成手枪弹夹,最先装进去的子弹是不是最后打出的呢,
三 . 全局区
全局区分为全局变量区(存放全局变量的),静态变量区(static修饰的全局或局部变量),常量区(字符串,const修饰的全局变量)
四 . 代码区
顾名思义,他是以二进制存放代码的区域;
六,小结
所有的东西都总结在在这个图里啦,是不是一目了然呢哈哈
最后
希望能够对一起学习的友友们有点帮助,友友们的支持就是我写下去的动力哈哈~
如果觉得本文还有不足,或者有不清楚的地方,欢迎评论区留言,或者私信交流~
最最最后,,创作不易,动动你发财的手手,点个赞赞好吗~