01 2023 档案
调用约定
摘要:调用约定 1. x86 体系 x86 体系下有四种调用约定 1.1 四种调用约定的区别 | 调用约定 | __cdecl | __stdcall | __fastcall | __thiscall | | | | | | | | 调用规范 | int __cdecl function(int a
递归
摘要:递归 1. 概念 自己调用自己 2. 条件 必须有if退出条件语句,且在递归代码段之前 一般退出条件里是全局变量 3. 递归使用方法 1)函数主要执行代码在递归块之前(和for循环差不多) 2)将函数执行代码放在递归块之后 此方法相当于:到最后一层达到退出条件,返回上一层,再执行代码 普通循
变量
摘要:变量 变量在内存中的位置和访问方式 位置 在属性为可读写的数据节中 访问方式 栈内存:ebp-- ebp++ 堆内存:间接访问 全局变量存储区:使用offset寻址 常量区:使用offset寻址 全局变量 位置:所在地址为数据区 生命周期:与所在模块一致,在程序执行前都已
CreateProcess函数源码分析
摘要:CreateProcess函数源码分析 源码版本:Windows 2003 源码 源码阅读工具:Source Insight 函数功能分析 函数原型 BOOL CreateProcessA( [in, optional] LPCSTR lpApplicationName, [in, out,
常量
摘要:常量 常量概念 在程序运行前就已经存在,它们被编译到可执行文件 中,当程序启动后,它们便会被加载进来。这些数据通常都会保存在 常量数据区中,该区的属性没有写权限。 常量定义 1. #define定义常量 编译器在对其进行编译时,会将代码中的宏名称替换成对应信息。宏的使用可以增加代码的可读性
关于 const
摘要:const 限定符 在编译器中限制变量,设定该变量不可被改变,但实际上系统里还是将由 const 修饰的值识别为一个变量(只是在编译器中进行限制) 注意: 由 const 修饰的变量必须在定义时就进行初始化 const 和引用 对常量的引用:不能被用作修改他所绑定的对象,可以指向一个常量对象,也可以
结构体定义及结构体粒度(alignment)
摘要:结构体定义及结构体粒度(alignment) #pragma pack(1) typedef struct _STUDENT_INFORMATION_ { int Age; char v1; int v3; char v2; }STUDENT_INFORMATION; 结构体的成员对齐值: 结构体中
栈和堆的区别以及栈数组和堆数组的区别
摘要: 这里写得很简洁,实际上堆的机制比较复杂,我详细地学习了 Windows 下的堆管理机制,如果对这部分感兴趣的话,可以参考我的另一篇文章:https://www.cnblogs.com/XiuzhuKirakira/p/16986744.html 栈和堆的区别 1)生命周期 栈:生命周期在被调用函