嵌入式Linux C(九)——内存管理

简介: 嵌入式Linux C(九)——内存管理

内存管理


1. 硬件(静态存储)VS内存(动态存储)区别


hello.c hello(硬盘) ./hello(hello从硬盘加载内内存中)


2. 为什么所有的编程都关注内存管理?


内存属于稀缺资源


3. 编程过程中,内存管理主要做什么?


防止内存泄露


4. 如何防止内存泄露?


用户自己管理:缺点:对用户的要求比较高(良好编码习惯、经验值) 优点:开销少,实时性高

系统管理:能够有效防止内存泄露 缺点:开销大,实时性差,用户无法干预(GC:垃圾回收机制 )


5. C语言防止内存泄露方法


养成良好的编码习惯

内存区域的划分(Linux虚拟地址空间)

0a2653c851af460fa595bd959398a8f1.png

.bss段:保存未初始化的全局变量

.data:初始化过的全局变量

.rodata:常量数据

.text:代码段

栈------栈溢出、栈攻击

动态分配内存的方式选择

从全局数据区域分配

在栈上创建

在堆上创建:malloc(内存池),calloc,realloc,free


6. 常见的内存错误及对策


内存分配未成功,却使用了它

内存分配虽然成功,但是尚未初始化就应用它

内存分配成功并且已经初始化,但操作越过了内存的边界

忘记了释放内存,造成内存泄露

释放了内存却继续使用它


7. 检测内存泄露


内存检测工具:valgrind(Linux可用apt-get安装)

memcheck


gcc demo2.c -o demo2

val

valgrind --tool=memcheck --leak-check=full ./demo2


相关文章
|
23天前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
54 3
|
30天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
62 5
|
1月前
|
Shell Linux C语言
【Shell 命令集合 磁盘维护 】Linux 创建一个初始化内存盘 mkinitrd命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建一个初始化内存盘 mkinitrd命令使用教程
35 0
|
5天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
11天前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
|
18天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 > /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
33 0
|
19天前
|
Prometheus 监控 Cloud Native
【Linux】查看系统内存命令(详细讲解)
【Linux】查看系统内存命令(详细讲解)
|
23天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
|
24天前
|
Linux
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
7 1
|
24天前
|
安全 Linux
嵌入式Linux系统关闭串口调试信息的输出
嵌入式Linux系统关闭串口调试信息的输出
17 1