Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
static
线程内变量
全局变量
【RTT新手求助】线程中的static变量和全局static变量区别
发布于 2021-04-09 16:36:58 浏览:1455
订阅该版
```c /* 现在first_init标志放在函数内部都不行了?放在全局就好了 是因为内存占用太大了?不对呀,这个static又不占用栈空间? 放在函数外,那么则通过串口发送demo_03命令,第二次进入的时候,first_init 已经变为了1。 但是如果放在函数内部,则第二次进入依然是0。理论上不应该呀,是不是内存溢出导致的? msh >free total memory: 4072 used memory : 3128 maximum allocated memory: 3128 */ static uint8_t first_init = 0; void demo_03(void) { // static uint8_t first_init = 0; if(first_init == 0) { first_init = 1; rt_sem_init(&sem_lock,"sem_lock",1 ,RT_IPC_FLAG_FIFO); rt_sem_init(&sem_empty,"sem_empty",SEM_MAX,RT_IPC_FLAG_FIFO); rt_sem_init(&sem_full,"sem_full",0,RT_IPC_FLAG_FIFO); rt_thread_init(&thread1, "produce", producer_thread, NULL, thread1_stack, 256, 1, 10); rt_thread_init(&thread2, "consum", consumer_thread, NULL, thread2_stack, 256, 3, 10); rt_thread_startup(&thread1); rt_thread_startup(&thread2); } else { rt_kprintf("demo_03 is already started\n"); } } MSH_CMD_EXPORT(demo_03, semaphore description) ```
查看更多
james_s
2021-04-09
这家伙很懒,什么也没写!
我用这个编译器试了试 arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors 6-2017-q1-update) 6.3.1 rf-thread最新master分支, 放到函数里面和外面效果一样: ![image.png](https://oss-club.rt-thread.org/uploads/20210409/d61f4e7afa1f173f1800dd4b1c24aa09.png) ![image.png](https://oss-club.rt-thread.org/uploads/20210409/6ec8ea858bd87dec63c25ca1fb275388.png)
3
个回答
默认排序
按发布时间排序
flashman2002
2021-04-09
这家伙很懒,什么也没写!
放在函数外,第二次进入该函数时,first_init变为了1。(没毛病) 放在函数内部,第二次进入依然是1。(也没有毛病呀)
mii
2021-04-09
这家伙很懒,什么也没写!
static用法: 在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c.该变量在本文件内从定义开始到文件结束可见。 2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下: a.该变量在全局数据区分配内存。 b.它始终驻留在全局数据区,直到程序运行结束。 c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
apaki
这家伙很懒,什么也没写!
提问
1
回答
1
被采纳
0
关注TA
发私信
相关问题
1
线程创建中的static
2
请问下使用MSH命令进入的函数如何直接调用
3
rt-thread air724 启动顺序问题
4
qemu-vexpress-a9 上c++ 全局类的构造函数没有调用
5
RT_Thread中不同线程对全局变量读和写,会导致死机吗?
6
全局变量定义问题,内存被分配到哪了
7
变量循环自加1,循环第二次时就突变其他数字,请问是什么原因造成的?
8
全局变量在系统初始化时被改写
9
系统在堆初始化时进入到rt_object_get_information 为什么返回RT_NULL?
10
在rtthread的中断中,以及外部线程都对全局变量进行操作,如何保证临界区全局变量正确?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部