摘要: linux下C++开发工具: emacs/vim 编辑器 gcc/g++ 编译器 gdb 调试工具 valgrind 内存泄露检查 doxygen 文档组织工具 linux基本命令: 1.windows linux互传文件 rz,sz makefile编写: 首先我们还需要了解一下makefile。 阅读全文
posted @ 2019-07-18 10:47 shinymood 阅读(124) 评论(0) 推荐(0) 编辑
摘要: ntdll中保存了kernel32函数的指针 阅读全文
posted @ 2018-04-17 22:09 shinymood 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 虚拟内存:将不连续的物理内存抽象化后方便上层使用的内存。 windows虚拟内存分布: 32位cpu: 32bit cpu的寻址空间是0 ~ 4 G(2^32),低2G为用户地址空间(user space),对应r3权限,用户的进程都工作在这个空间;高2G为系统地址空间,对应r0,为所有系统组件,驱 阅读全文
posted @ 2018-01-07 16:14 shinymood 阅读(202) 评论(0) 推荐(0) 编辑
摘要: dynamic type: 比如 Here k is a reference to an object of type A, but the real type of the referred object, its dynamic type, is B. Here "dynamic" has th 阅读全文
posted @ 2017-12-01 00:45 shinymood 阅读(162) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-11-29 16:11 shinymood 阅读(0) 评论(0) 推荐(0) 编辑
摘要: thread-safe: 如果一个函数在多线程的条件下仍然保持计算结果和单线程一样,就说明它是线程安全的。 线程安全的函数: 不包含静态数据区的变量,只有堆栈变量; 有静态数据区的变量,然而会加锁; 可重入: 对于单个线程,如果执行到中途,打断了又执行一次,计算结果仍然保持正确,说明这个函数是可重入 阅读全文
posted @ 2017-08-21 14:00 shinymood 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 每个模块都是一个excute,全局变量存放在各自的.data(必包含)段(初始化的数据块,全局数据区,用来存放全局变量和静态变量。) 所以模块之间的全局变量没有联系。 但是,如果模块A导出了变量a,模块b引用:extern a;则b链接阶段会去找这个extern a;在A里面找到,则根据a的lib填 阅读全文
posted @ 2017-08-20 23:05 shinymood 阅读(305) 评论(0) 推荐(0) 编辑
摘要: https://zhuanlan.zhihu.com/p/20628410 静态对象每个模块一个 如果每个模块调用static instance()实现不了,这样不同模块instance()出来的是不同的实例对象,可以在模块初始化 module_main::init(主模块指针) { 指针->reg 阅读全文
posted @ 2017-08-18 20:30 shinymood 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 微软说:32位的驱动不能运行在64位 64位程序不支持 asm http://www.yiiyee.cn/Blog/asm/ https://www.youtube.com/watch?v=cfN7cCzHrrM 阅读全文
posted @ 2017-07-26 15:14 shinymood 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 文档:https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554690(v=vs.85).aspx 1.用户模式和内核模式: https://msdn.microsoft.com/zh-cn/library/windows/hard 阅读全文
posted @ 2017-07-18 17:22 shinymood 阅读(217) 评论(0) 推荐(0) 编辑