深入理解C++虚函数
本文主要介绍 C++虚函数的底层实现,虚析构函数的作用,虚函数表的数据结构及存储方式,以及__declspec(novtable)的作用。
本文主要介绍 C++虚函数的底层实现,虚析构函数的作用,虚函数表的数据结构及存储方式,以及__declspec(novtable)的作用。
转储文件也就是我们常说的 dump 文件,可以把转储文件看成软件的某个时刻的一个快照,我们一般在软件出现问题时手动生成或者程序自动生成转储文件。
本文介绍几种借助第三方工具生成转储文件的方法,并在最后附上使用代码生成转储文件的方法。
本文从汇编的视角分析了函数的调用方式,掌握该知识对使用 OllyDbg 等动态调试工具会大有裨益。
本文介绍几种实现在程序退出后,从磁盘删除自身 exe 文件的方式。该技术通常应用于安装包卸载程序中。
本文简要介绍 C++标准库提供的几种线程操作方法,主要介绍如何判断线程是否已经结束运行。
Lamada 表达式是 C++11 最重要也是最常用的特性之一。Lamada 来源于函数式编程的概念,也是现代编程语言的一个特点。
在早期的 Windows 操作系统中,在同一用户下运行的所有进程有着相同的安全等级,拥有相同的权限。此时进程可以自由地发送Windows 消息到其他进程的窗口。
从 Windows Vista 开始,对于某些 Windows 消息,这一方式再也行不通了,进程(或者其他的对象)开始拥有一个新的属性–特权等级(Privilege Level)。此时一个特权等级较低的进程不再可以向特权等级较高的进程发送消息,即便他们在相同的用户权限下运行也不行,这就是所谓的用户界面特权隔离(User Interface Privilege Isolation, 简称 UIPI)。
当电脑安装完 Steam 后,我们在浏览器中访问steam://run/123,浏览器会自动提示打开 Steam 程序。类似的功能在迅雷、QQ 等产品上也都有使用,本文讲述如何实现该功能。
