freertos内存pvPortMalloc 和 malloc 区别 ,以及全局变量占用情况
1.FreeRtos占用内存
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) )
pvPortMalloc是从configTOTAL_HEAP_SIZE中申请内存,作为ZI-data被编译。
malloc是直接从SRAM 堆 中申请内存,是和全局变量一个地位。
2.芯片占用情况
- RO-data是 Read Only 只读常量的大小,如const型;
- RW-data是(Read Write) 初始化了的可读写变量的大小;
- ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化;
FLASH:Code + RO-Data + RW-Data
SRAM: RW-Data + ZI-Data
3.全局变量的占用
- 定义未初始化未使用 : 不占空间
char a[1000];
int main()
{
}
- 定义未初始化并使用: 占用ZI-Data
char a[1000];
int main()
{
memset(a, 0, sizeof(a));
}
- 定义初始化: 不管用不用,都占用RW-Data
char a[1000] = "hello";
int main()
{
//memset(a, 0, sizeof(a));
}
freertos内存pvPortMalloc 和 malloc 区别 ,以及全局变量占用情况的更多相关文章
- C—动态内存分配之malloc与realloc的区别
在程序的执行期间分配内存时,内存区域中的这个空间称为堆(heap).还有另一个内存区域,称为堆栈(stack),其中的空间分配给函数的参数和本地变量.在执行完该函数后,存储参数和本地变量的内存空间就会 ...
- linux内存管理之malloc、vmalloc、kmalloc的区别
kmalloc kzalloc vmalloc malloc 和get_free_page()的区别 一.简述 1. kmalloc申请的是较小的连续的物理内存,虚拟地址上也是连续的.kmalloc和 ...
- 内存管理运算符new delete与内存管理函数malloc free的区别——已经他们对对象创建的过程。
(1)内存管理函数与内存管理运算符的区别 内存管理函数有内存分配函数,malloc calloc realloc 以及内存释放函数free. 内存管理运算符有new 和delete. 两种内存管理方式 ...
- FreeRTOS内存管理
简介 Freertos的内存管理分别在heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c个文件中,选择合适的一种应用于嵌入式项目中即可. 本文的图片中 红色部分B ...
- HeapAlloc、GlobalAlloc和new等内存分配有什么区别么?
查找了一些 new , GlobalAlloc, HeapAlloc分配内存方式的区别. 转了一些资料 //============================================== ...
- Linux内存分配小结--malloc、brk、mmap【转】
转自:https://blog.csdn.net/gfgdsg/article/details/42709943 http://blog.163.com/xychenbaihu@yeah/blog/s ...
- Linux C 堆内存管理函数malloc()、calloc()、realloc()、free()详解
C 编程中,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的 堆区(heap):一般 ...
- new和malloc区别,delete和delete []区别
面试被问到上述问题,所以特地总结一下: 一.new和malloc的区别. 1.new可以返回指定类型的指针,并且自动分配内存大小:malloc需要计算手动计算分配空间的大小,并且返回值需要强转为实际类 ...
- C++中new和malloc区别
面试中new和malloc区别会被经常问到,审视了自己,发现不知道该怎么表达 整理一下: 1.从属性 new/delete是C++关键字,需要编译器支持: malloc/free是库函数,需要头文件支 ...
- c语言之内存的申请malloc() 和释放free()
c语言之内存的申请malloc() 和释放free() 1.如何使用 malloc 函数 malloc是一个函数,专门用来从堆上分配内存.使用malloc函数需要几个要求: 内存分配给谁?分配多大内存 ...
随机推荐
- 新版的Eureka已经移除了基于Ribbon的客户端的负载均衡
启用一个EurekaServer和一个服务调用方,两个copy的服务提供方. 本次测试用Springcloud 2021.0.1版本 客户端使用RestTemplate 的负载均衡 @LoadBala ...
- 关于Qt的QPixmap中不支持jpg文件格式的问题
问题 Qt部分版本存在不支持jpg,JPEG等图像格式的问题 qDebug()<<QImageWriter::supportedImageFormats(); 这行代码可以查看所支持的图像 ...
- 看完这篇,还不懂JAVA内存模型(JMM)算我输
欢迎关注专栏[JAVA并发] 更多技术干活尽在个人公众号--JAVA旭阳 前言 开篇一个例子,我看看都有谁会?如果不会的,或者不知道原理的,还是老老实实看完这篇文章吧. @Slf4j(topic = ...
- WinUI(WASDK)使用MediaPipe检查手部关键点并通过ML.NET进行手势分类
前言 之所以会搞这个手势识别分类,其实是为了满足之前群友提的需求,就是针对稚晖君的ElectronBot机器人的上位机软件的功能丰富,因为本来擅长的技术栈都是.NET,也刚好试试全能的.NET是不是真 ...
- .Net执行SQL/存储过程之易用轻量工具
支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac. 由于该工具近来被广东省数个公司2B项目采用,且表现稳定,得到良好验证 ...
- Jmeter 之跨线程传参
其他线程使用某个线程中提取的值,比如场景:客户端一直与服务端保持连接的同时进行其他业务操作 1.建立以下两个线程组,并添加相应业务接口 2.发送心跳时,需要token,在用户登录接口下添加提取器提取t ...
- Django项目启动 AttributeError: ‘str‘ object has no attribute ‘decode‘ 问题
Watching for file changes with StatReloader Performing system checks... System check identified no i ...
- JavaScript:对象:如何判断对象是否有某个属性?操作符in
使用in运算符来判断,有返回true,没有返回false:
- Linux命令篇 - nc(ncat) 命令
nc (ncat) Ncat is a feature-packed networking utility which reads and writes data across networks fr ...
- 来自一位十年.net研发老人的吐血整理:.Net技术栈-网址导航
业余时间为什么整理这个? 内容聚合:不用一个一个搜索,我们很快可以进入常用技术官网 提高效率:多看官方文档可以最快,最准确的掌握相关的技术资讯,不用被一些没理解透或者有偏差的技术分享所带偏. 很多有经 ...