社区
单片机/工控
帖子详情
线程中的malloc
wopabe
2019-03-27 05:44:09
在线程的执行函数里
如果malloc了内存
然后while(1)处理任务
之后即使free了内存,这个free代码应该也走不到,因为前面有while(1)任务
请问,这块内存怎么释放?
...全文
368
5
打赏
收藏
线程中的malloc
在线程的执行函数里 如果malloc了内存 然后while(1)处理任务 之后即使free了内存,这个free代码应该也走不到,因为前面有while(1)任务 请问,这块内存怎么释放?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Acuity.
2019-03-30
打赏
举报
回复
待任务执行再释放啊。
wopabe
2019-03-29
打赏
举报
回复
引用 2 楼 WangLanguager 的回复:
在while(1)程序里进行malloc、free不行吗?
这是个方法,但只要内存操作太频繁了
走在茫然的路上
2019-03-29
打赏
举报
回复
不可以任务处理结束,跳出循环释放吗
WangLanguager
2019-03-28
打赏
举报
回复
在while(1)程序里进行malloc、free不行吗?
wopabe
2019-03-27
打赏
举报
回复
没有人知道吗?
子
线程
操作
malloc
内存
这个问题的引出是由于,在实际应用过程
中
遇到主程序需要调用独立的功能模块(API),并获取其返回结果, 可以通过文件操作,将功能模块生成结果写入日志,主程序读取日志结果,而主程序提取日志信息后,要需要形成新的 日志文件,这个过程就涉及到三次文件打开关闭操作,影响软件性能; API实际处理运算是在其内部创建的子
线程
的子
线程
(该API是在第三方API基础封装)
中
完成,
线程
创建过程能够传递
深入剖析Linux下
malloc
的
线程
安全性
如果此时
malloc
正在进行一些关键操作,比如调整内存池的结构,信号处理函数
中
的
malloc
调用可能会破坏
malloc
的内部数据结构,导致程序崩溃或出现其他不可预测的错误。例如,
线程
A在自己的内存池
中
进行内存分配操作,无论
线程
B同时在做什么,都不会干扰到
线程
A的操作,极大地提高了并发性能。在Linux下多
线程
编程
中
,
malloc
虽然是
线程
安全的,但我们作为开发者,需要深入理解其工作原理,合理使用,才能在复杂的多
线程
环境
中
充分发挥其优势,避免潜在的问题,编写出健壮、高效的多
线程
程序。
malloc
是
线程
安全的吗
只在Linux下查看了
malloc
的使用情况: GCC版本4.6.1 libc-dev 3.0.0-14.23 //============================================================ libc
中
有非
线程
安全/
线程
安全两个版本
malloc
函数 下面的链接对此有描述,几年前的版本可能是这样的: 通过 -pthre
malloc
线程
安全
只在Linux下查看了
malloc
的使用情况: GCC版本4.6.1 libc-dev 3.0.0-14.23 //============================================================ libc
中
有非
线程
安全/
线程
安全两个版本
malloc
函数 下面的链接对此有描述,几年前的版本可能是这样的: 通过 -pthre
malloc
在多
线程
下为什么慢?——从原理到实测
摘要: 在多
线程
环境下,
malloc
性能下降主要由锁竞争(arena 锁)、缓存一致性开销、上下文切换、元数据管理和内存碎片等因素导致。实验显示:1) 小块内存通过 brk 分配,大块通过 mmap 系统调用;2) 多
线程
测试
中
,每
线程
内存池方案比标准
malloc
快数倍;3)
malloc
存在显著元数据开销(如分配 64 字节实际占用 80+ 字节)。这些因素共同导致高并发场景下
malloc
成为性能瓶颈,而
线程
局部内存池能有效规避这些问题。
单片机/工控
27,521
社区成员
28,798
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章