内存
狼群一一先锋
他日仙界如相见,一声道友尽沧桑。
展开
-
linux跟踪内存泄露的方法
最近做rtmp推流的时候由于使用了很多librtmp和其他代码,逻辑混乱导致功能虽然都实现了,但是出现了内存泄露的现象。其实不改也不会影响使用,因为吃的一点也不厉害,反复大量的启动关闭才会出现泄露,实际使用没有那么变态的操作。但谁让咱严谨呢。首先上网查,无非那几个办法。但我们是嵌入式交叉编译,valgrind就别想了,因为连mtrace都没有!mtrace还是很好用的,就按其他博客写的那样去操...原创 2019-01-21 20:13:51 · 982 阅读 · 0 评论 -
笔记——深入理解Linux内核——第九章 进程地址空间——红黑树
刚刚看到了红黑树(red-black tree),进程申请的地址空间管理用到的,改变了我一直的一个观点。我一直以为所有的数据管理都是简单的链表,没有其他的了。看到这里我才发现我的认识是错误的,一切的根本都是链表没错,但在链表的基础上,设计师又设计出了一些链表的节点规则,这样一切就真的就变了。例如这个红黑树,在成百上千个节点的情况下就大大的缩短了查询速度。如果是简单的链表,那速度与节点个数是简单的线...原创 2019-01-28 09:37:27 · 274 阅读 · 0 评论 -
笔记——深入理解Linux内核——第八章 内存管理——cache/slab
今天早上看了高速缓存和slab分配器这部分的开头几节,写一点自己的感受吧。原公司所有嵌入式设备都使用的那套内存管理接口(有名字的,就不透露了)就是参考的早期linux内核使用的slab分配器使用的算法,也就是伙伴系统。为了使碎片可控,在应用层做了这么一套东西其统一的创建和释放内存。我想水平很高但又不能掌握linux内核才会采取这种办法。顶级的不能这么做,直接修改内核slab和kmem_cach...原创 2019-01-23 09:48:34 · 234 阅读 · 0 评论 -
解决一个信号6问题(sig6,signal6,SIGABRT,double free or corruption (!prev))
我遇到的信号6 99%都是由于数据越界导致,在memcpy的时候没有错误,在free的时候系统报SIGABRT。今天也不例外。代码是我写的,考虑不周,以后拷贝更多加小心。上图中的data大小为1024,如果memcpy 1025各字节,拷贝正常,但是在你free它的时候就会报上面截图中的错误。这就是原因。遇到这种问题不要怕,新手不要给自己设置障碍,信号是系统提供给你的帮助,而不是困难。...原创 2019-09-04 17:56:42 · 30926 阅读 · 2 评论