打印
[疑难问答]

单片机堆栈说明与全局变量和局部变量的存储位置

[复制链接]
楼主: wilhelmina2
手机看帖
扫描二维码
随时随地手机跟帖
21
youtome| | 2023-10-17 15:59 | 只看该作者 回帖奖励 |倒序浏览
在单片机中,堆栈通常是一个内存区域,可以通过软件编程来设置其大小和位置。

使用特权

评论回复
22
juliestephen| | 2023-10-17 16:55 | 只看该作者
栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。当一个函数被调用时,它的局部变量和形参会被压入栈中;当函数执行完毕返回时,这些变量和参数会被弹出栈外。

使用特权

评论回复
23
gygp| | 2023-10-17 17:34 | 只看该作者
局部变量,以及形参,返回值等存储在栈中,由编译器自动分配和释放。

使用特权

评论回复
24
1988020566| | 2023-10-17 17:47 | 只看该作者
每当进入一个函数时,单片机都会将一些内存空间分配给这个函数的运行使用,这部分内存就被称为“栈帧”。在函数运行过程中创建的所有局部变量,都会被存放在这个栈帧内。

使用特权

评论回复
25
jackcat| | 2023-10-17 17:55 | 只看该作者
堆栈的大小通常是固定的,由编译器或操作系统进行分配和释放。堆栈的大小通常是由系统参数指定的,例如在嵌入式系统中,堆栈大小通常由系统的RAM大小决定。

使用特权

评论回复
26
mikewalpole| | 2023-10-17 18:24 | 只看该作者
在C语言中,全局变量在内存中的地址是固定的,可以在程序的任何地方访问。

使用特权

评论回复
27
sdCAD| | 2023-10-17 19:19 | 只看该作者
全局变量和局部变量在存储位置上有所不同,全局变量在数据区中存储,而局部变量在堆栈中存储。

使用特权

评论回复
28
timfordlare| | 2023-10-17 19:29 | 只看该作者
全局变量和局部变量的存储位置是根据它们的声明方式来确定的。

使用特权

评论回复
29
maqianqu| | 2023-10-17 19:56 | 只看该作者
全局变量和局部变量的存储位置是不同的,全局变量存储在静态区,而局部变量存储在栈中。

使用特权

评论回复
30
burgessmaggie| | 2023-10-17 20:15 | 只看该作者
局部变量则是在程序运行过程中在某个特定函数内临时创建的变量,当函数执行完毕后,这些局部变量所占用的存储空间就会被系统自动回收。局部变量的存储位置位于堆栈空间。

使用特权

评论回复
31
primojones| | 2023-10-17 20:28 | 只看该作者
局部变量仅在其所在的函数或代码块中可见,它们的生命周期只在函数或代码块执行期间。局部变量通常存储在堆栈中,其存储位置在编译时确定,并且通常是在调用函数时动态分配的。

使用特权

评论回复
32
juliestephen| | 2023-10-17 20:36 | 只看该作者
需要注意全局变量和局部变量的存储位置和生命周期,以便于管理和优化程序。

使用特权

评论回复
33
gygp| | 2023-10-17 21:13 | 只看该作者
单片机堆栈是一种用于存储临时数据和返回地址的数据结构。它是一个先进后出的数据结构,也就是说,最后进入堆栈的数据将被最先取出。堆栈在单片机系统中广泛应用于函数调用、中断处理和返回语句等场景。

使用特权

评论回复
34
jackcat| | 2023-10-17 21:33 | 只看该作者
在单片机中,全局变量存储在静态区,这个区域通常在RAM中,但也有可能在ROM或FLASH中,具体取决于单片机的型号和配置。全局变量的作用范围是整个程序,它们的值在程序运行期间不会改变。

使用特权

评论回复
35
uytyu| | 2023-10-17 21:42 | 只看该作者
单片机的堆栈是一种存储区域,用于存储函数调用过程中的局部变量、函数参数和返回地址等信息。堆栈由操作系统或程序自己来管理,具有后进先出(LIFO)的特性。

使用特权

评论回复
36
lihuami| | 2023-10-17 22:13 | 只看该作者
与全局变量和局部变量不同,堆栈是用于存储函数调用过程中的临时数据,而不是用于长期存储程序数据。

使用特权

评论回复
37
sdCAD| | 2023-10-17 23:01 | 只看该作者
需要注意全局变量和局部变量的存储位置,避免数据冲突等问题。

使用特权

评论回复
38
vivilyly| | 2023-10-18 19:38 | 只看该作者
当一个函数被调用时,编译器会在堆栈中为该函数分配一个栈帧,用于存储该函数的参数、局部变量等。当函数执行完毕返回时,其栈帧将被弹出,释放堆栈空间。堆栈的深度和大小通常受限于单片机的硬件资源和编译器配置。

使用特权

评论回复
39
uiint| | 2023-10-18 20:08 | 只看该作者
在单片机中,全局变量和局部变量的存储位置有所不同。全局变量是 在程序 的数据区中存储的,而局部变量则是在堆栈中存储的。

使用特权

评论回复
40
pl202| | 2023-10-18 20:17 | 只看该作者
全局变量和局部变量通常存储在不同的内存区域。全局变量通常存储在程序存储器中,而局部变量则存储在堆栈中。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则