C/C++教程

ubuntu和stm32下的C程序的内存分配问题

本文主要是介绍ubuntu和stm32下的C程序的内存分配问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、内存分配

在这里插入图片描述
在这里插入图片描述

1、全局变量与局部变量

全局变量:
在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件。
局部变量:
定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效,再调用就是出错。
区别如下:
在这里插入图片描述
二)堆与栈
堆:
自由申请的空间,按内存地址由低到高方向生长,其大小由系统内存 / 虚拟内存上限决定,速度较慢,但自由性大,可用空间大。
栈:
存放 Automatic Variables ,按内存地址由高到低方向生长,其最大值由编译时确定,速度快,但自由性差,最大空间不大。
二者对比如下图:
在这里插入图片描述

2、Ubuntu 和 STM32 下的输出验证

这篇关于ubuntu和stm32下的C程序的内存分配问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!