嵌入式学习笔记 一:内存分部
来源:互联网 发布:java初级编程题目 编辑:程序博客网 时间:2024/05/29 09:13
内存分部如下图所示
内存分部
代码段:存放指令
数据段:存放局部变量、形参、全局变量、静态变量
静态变量:定义时使用 static
关键字定义,只初始化一次,之后不会再被调用时不再初始化,如果在定义时不进行初始化,数类型自动初始化为0,字符型自动初始化为空字符,局部静态变量之作用于所属局部函数,但是所占内存空间不会被释放。static 修饰的变量(静态)变量作用范围在该变量所在的最大范围内。
static 全局变量 —–只作用在该文件程序中
static 局部变量 —–只作用在该函数内
static 函数 —–该函数只能作用在该文件程序中
数据段:存放全局变量、静态变量
数据段里有.data .bss .rodata三段,其各段的作用如下
.data 存放初始化的全局变量和静态变量
.bss 存放未初始化的全局变量和静态变量
.rodata 存放常量
堆:
动态分配空间(malloc(),calloc(),realloc();)
内存从低位开始分配,空间使用完后,一定要使用free()释放,如果不释放,这空间一直存在到程序退出。
void *malloc(size_t size);向系统申请size个字节的内存空间,返回所申请内存的起始指针地址,
void *calloc(size_t nmemb, size_t size); 申请空间 nmemb*size大小空间,自动清0。nmemb是申请空间的个数,size是申请内存的大小。
void *realloc(void *ptr, size_t size); 当初始申请的内存不够用时,使用realloc调整空间大小。
栈:存放局部变量、形参
自动分配内存,地址从高位开始,当局部变量或形参生命结束时自动释放
函数{}中定义的变量(局部变量),一声明好,系统自动分配一个空间,当局部变量生命一结束,系统自动把空间回收。
形参:
int f(int a,int b)
{
//当f函数被调用时,参数传递给a和b,a、b就是形参
}
例:
test.c ------------- struct A { int a; int b; }; int a=4; //数据段.data int c; //数据段.bss struct A * f(int q) { static int w=1; //数据段.data static int d; //数据段.bss int aa=4; //栈 struct A *p=malloc(sizeof(struct A)); //堆 return p; } int main() { struct A p1; //栈 struct A *pp=f(); }
博客的文章都会发到个人订阅号上,欢迎关注
- 嵌入式学习笔记 一:内存分部
- 嵌入式课堂--学习笔记一
- 嵌入式学习笔记(一)
- 嵌入式系统学习笔记(一)
- 嵌入式学习笔记-C语言(一)
- Linux及嵌入式学习笔记一
- 嵌入式linux学习笔记一--打补丁
- 嵌入式linux学习笔记(一)
- 初学嵌入式Linux开发,学习笔记一
- 嵌入式Linux学习笔记(一)
- 嵌入式C学习笔记(一)嵌入式概述
- 分部式爬蟲(一) 創建環境
- 嵌入式linux学习笔记 – 内存管理单元mmu
- 嵌入式学习笔记2—S3C2440的内存初始化
- c++编译程序的内存分部
- 嵌入式汇编学习笔记(一)----学习规划和准备
- Linux内存管理学习笔记(一)
- linux内存学习笔记(一)
- Notification——通知应用
- Java 利用枚举实现单例模式
- selenium之 玩转鼠标键盘操作(ActionChains)
- 常用控件系列之——代码实现RadioGroup嵌套RadioButton
- 继承、访问控制符、子类重载父类的方法、子类调用父类的方法
- 嵌入式学习笔记 一:内存分部
- C++ PRIMER 5TH 课后题答案1.16
- 华为笔试题1-2016
- 选择排序(2)
- application——注意点
- TCP和UDP有什么区别
- 简单描述Oracle物化视图日志
- android控件——ImageView
- 抽象类型