摘要:
看了很多文章,定位无非是这2种: 1. 查log。自己封装一个申请内存和释放内存的接口,这个接口打印固定格式的日志。然后在发生内存泄漏的时候可以查看这些日志是否打印,如果只打印了申请日志,没打印释放日志,说明这个地方发生内存泄漏。 2. Linux下使用工具valgrind排查 预防: 尽量不使用堆 阅读全文
摘要:
原文: https://blog.csdn.net/HappySundlut/article/details/120191682 为什么要分用户态和内核态CPU将指令分为特权指令和非特权指令 对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令 特权指令— 阅读全文
摘要:
参考: https://zhuanlan.zhihu.com/p/336775510 https://www.cnblogs.com/charlesblc/p/6277810.html 异常与中断 (异常其实是一种不可屏蔽中断,它可以由软件引起,也可以由硬件引起,关于可屏蔽/不可屏蔽中断、中断优先级 阅读全文
摘要:
https://blog.csdn.net/zsiming/article/details/126695393 总结: ps aux | grep filename // 找出进程ID top -Hp PID // 列出进程号为PID下的所有线程 gdb attach PID // 用gdb调试正在 阅读全文
摘要:
c++中所有的变量都是以下三者之一: 纯右值prvalue(Pure Right-hand-side Value):返回值是一个单纯的字面常数,被保存在寄存器中,C语言只有操作内存的能力而没有染指寄存器的能力,我们只能感知到他的值而不能改变。即prvalue是没有内存实体的值,所以prvalue没有 阅读全文
摘要:
右值变量只有内容,没有承载这个内容的实体,他表示一个数据信息,你不能像修改左值那样去修改右值变量,不能去取右值变量的地址(但是右值实际上是不是也像左值变量那样也存储在栈地址中我还不清楚) 右值引用是右值变量的别名,左值引用是左值变量的别名 对左值变量而言,它是存在实体的,对一个基本内置类型左值变量A 阅读全文
摘要:
原文:https://blog.csdn.net/a58125584s/article/details/124251253 什么是协议?以我的理解,就是指一组大家共同遵守的规则,比如发送信号a就意味着事件A,发送信号b就意味着事件B,我做出一个动作,对方收到后就心领神会知道我这个动作意味着什么,接下 阅读全文
摘要:
原文:https://www.cnblogs.com/yueqian-scut/p/3952263.html (有改动) 其它说法: 对C语言有所了解的人都知道main函数是整个程序的入口,但是其实不然,在内核中可以使用链接器来设置程序的开始地方。当内核使⽤⼀个exec函数执⾏C程序时,在调⽤mai 阅读全文
摘要:
原文:http://www.jzy789.com/t/04LZhzp.html 1.首先将标志位设为Non-blocking模式,准备在非阻塞模式下调用connect函数 2.调用connect,正常情况下,因为TCP三次握手需要一些时间;而非阻塞调用只要不能立即完成就会返回错误,所以这里会返回EI 阅读全文
摘要:
一个是智能指针shared_ptr互相指向的时候,2个都无法被析构 一个是进程正在访问内核空间的临界区,而此时正好被调度,临界区没有被释放,下一个进程正好也要访问这个临界区(https://blog.csdn.net/qq_45950109/article/details/118057659) 一个 阅读全文