2022_02_16
内存布局 内核空间 通常在最高的内存地址,用户态程序无法访问 操作系统保留的一部分内存,用于存储内核代码、设备驱动程序等 这部分内存一般不在普通应用程序的内存布局中明确显示,但确实存在并且用户态程序无法直接访问 栈区 由编译器自动分配释放,存放函数的参数值,局部变量等 由高地址向...
内存布局 内核空间 通常在最高的内存地址,用户态程序无法访问 操作系统保留的一部分内存,用于存储内核代码、设备驱动程序等 这部分内存一般不在普通应用程序的内存布局中明确显示,但确实存在并且用户态程序无法直接访问 栈区 由编译器自动分配释放,存放函数的参数值,局部变量等 由高地址向...
关于auto推导 关于t最后推导出的类型 auto 的默认类型推导规则会 忽略引用,直接推导出值的类型 函数 test() 返回的是 std::string&(引用),但 auto t = test(); 会 拷贝引用指向的值,生成一个新的 std::string 对象 ...
GetMessage和PeekMessage PeekMessage在处理获得消息时候和GetMessage一样,关键不同的是PeekMessage在没有消息处理的时候还会继续保持循环激活状态,并且继续占用资源。 GetMessage每次都会等待消息,直到取到消息才会返回。Pee...
查看内存泄露的方法 Visual Studio CRT 库方法 这是最直接的内置方法,特别适合在开发调试阶段快速发现问题 Visual Leak Detector (VLD) 在包含main()函数的源文件中包含头文件即可:#include <vld.h> 在Debu...
界面白屏,如何定位问题 发生在初始化阶段 检查窗口创建和消息循环 在窗口创建后、进入主消息循环前添加日志或断点 验证消息泵(Message Pump)是否在正常运行,没有因为某个消息被阻塞 审查资源加载 检查程序启动时加载的大型资源,如图片、字体等,是否存在或已正确载入 加载失败...
vector和list 进程间通信 浏览器输入网址后的行为 网络线程请求http数据 通过IPC将数据传给渲染进程的主线程 渲染进程的主线程将解析并构造DOM树,然后进行样式计算 然后根据DOM树和样式计算生成Layout树 然后通过遍历Layout树生成绘制顺序表 接着遍历La...
原子操作 概念 所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何context switch 原子操作可以保证正在工作的动作不被打断,即一旦开始,持续到结束。对比互斥锁优势在于,原子操作是在C/C++的层面,是无锁操作,既能解决并发...
static 修饰全局变量 加不加static都是静态存储方式 加了static,只初始化一次,防止在其他源文件中被引用 修饰局部变量 变成静态存储方式,变量的生命周期变长,作用范围不变 只初始化一次 修饰函数 加了static之后,函数在内存中只有一份 没加的话,普通函数在每个...
a b
shared_ptr shared_ptr采用引用计数的方式管理所指向的对象。当有一个新的shared_ptr指向同一个对象时(复制shared_ptr等),引用计数加1。当shared_ptr离开作用域时,引用计数减1。当引用计数为0时,释放所管理的内存。 可以使用make_s...
搜索当前分类