原创 RT-Thread入门学习笔记_2

2020-2-17 19:23 14646 18 2 分类: MCU/ 嵌入式 文集: RT-Thread入门学习文档

笔记内容参考RT-Thread内核入门指南教程视频:https://www.bilibili.com/video/av79513262?p=2

什么是堆栈?

在单片机应用中,人们常提及堆栈一词,实际上堆和栈是两个不同概念。栈(stack):由编译器自动分配释放。堆(heap):一般由程序员分配和释放。

1

int a=0;   //全局初始化区

char *p1;  //全局未初始化区

main()

{

int b;  //

char s[]=“abc”; //

char *p2;     //

char *p3=“123456”; //123456\0在常量区,p3在栈上。

static int c=0;  //全局(静态)初始化区

p1=(char *)malloc(10); //

p2=(char *)malloc(20); //

}

2

3

4

5

6

7

8

9

10

11

12

 

5~8行为局部变量,变量声明后系统自动分配内存空间。当程序执行结束,系统自动释放这些内存空间。第10~11行,编程者使用函数malloc()向内存空间申请了10的内存空间。程序执行后,系统无法自动释放该空间,需要编程者使用函数free()释放这些内存空间。因此,malloc()函数与free()函数总是成对出现。若编程者不使用free()函数释放申请回来的内存空间,则容易造成内存泄漏。

malloc()常规用法如下

char *p;

p=(char *)malloc(10);

free(p);

 

文章评论0条评论)

登录后参与讨论
我要评论
0
18
关闭 站长推荐上一条 /2 下一条