Dump分析:空指针访问二,重复释放堆内存二
示例dump分析:空指针访问二 代码 分析步骤 !analyze -v 信息1 RAX 寄存器中存储了地址 0x00000000,导致 mov dword ptr [rax], 2Ah 指令尝试向内存地址 0 写入值 0x2A(十进制 42)时触发异常 在 Windows 系统中...
示例dump分析:空指针访问二 代码 分析步骤 !analyze -v 信息1 RAX 寄存器中存储了地址 0x00000000,导致 mov dword ptr [rax], 2Ah 指令尝试向内存地址 0 写入值 0x2A(十进制 42)时触发异常 在 Windows 系统中...
终止进程 方法 主线程的入口点函数返回。 进程中的一个线程调用ExitProcess函数(要避免这种方式)。 另一个进程中的线程调用TerminateProcess函数(要避免这种方式)。 进程中的所有线程都“自然死亡”(几乎从来不会发生)。 入口点函数返回 让主线程的入口点函数...
示例dump分析:重复释放同一堆内存 代码 分析步骤 用windbg打开Dump 文件并加载符号 ctrl + s ctrl + p ctrl + i 自动分析崩溃原因 看到了相关异常信息如下 异常上下文解析: 可以看出,异常触发位置是:aet_breakpad_test!_fr...
可等待的计时器内核对象 概述 可指定的计时器内核对象会在某个指定的时间触发,或者每隔一段时间触发一次,通常被用来在某个时间执行一些操作。 函数 第二个参数表示将要创建的是一个手动重置计时器还是一个自动重置计时器。 当手动重置计时器被触发的时候,正在等待该计时器的所有线程都会变成可...
编译相关 #pragma init_seg 概述 是微软C++编译器中的一个编译指令,专门用于精细控制全局静态对象(包括静态变量)的构造和析构顺序 在解决复杂的初始化依赖或DLL加载问题时非常有用 语法 优先级 compiler 最高优先级 此组别的对象最先构造,最后析构 通常保...
字节 char char是c++里面基本的字符类型,通常用来表示单个字节 这大多数现代系统中,一个char占用1个字节,1个字节是8个位 char可以用来表示ascii字符集中的字符,其中每个字符都可以用一个字节来表示 ascii编码覆盖了英文字母、数字和一些基本的符号 但是在全...
相关概念 机械硬盘-磁道 机械硬盘盘片上的同心圆轨迹,数据沿磁道存储 机械硬盘-扇区 每个磁道被等分为若干弧段,每个弧段称为一个扇区 是物理扇区 是真实存在的物理结构 例如:一个磁道可能包含数百至上千个扇区,外圈磁道因周长更长可容纳更多扇区 读写单位 扇区是硬盘读写的最小物理单元...
作业 概述 作业可以让我们将一组进程当作一个实体来处理。 Windows提供的作业(job)内核对象,允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。 我们可以创建一个只包含一个进程的作业,来对进程施加平时不能施加的限制。 只含一个进程的作业 这么做的目的是为了对...
函数 InterlockedIncrement 概述 这两个函数是 Windows 平台上进行线程安全原子操作的核心工具,用于实现高效的无锁多线程编程 特性 原子性:CPU 硬件保证操作的不可分割性 无锁:无需传统互斥锁(mutex),性能更高 内存屏障:隐含完整的读-写内存屏障...
线程调度概述 每个线程都有一个上下文,这个上下文保存在内核对象中。它反应了线程上一次执行时CPU寄存器的状态。 大概每个20ms(GetSystemTimeAdjustment函数的第二个参数的返回值),Windows都会查看所有当前存在的线程内核对象。 这些对象中,只有一些被认...
搜索当前分类