在日常开发过程中,我们常常用如下这种形式的结构体来传递数据。
typedef struct _PATH_INFO {
HANDLE hPPid; // 父进程 PID
HANDLE hPid; // 子进程 PID
ULONG PathLength; // 子进程路径长度
TCHAR Path[1]; // 用于存储子进程路径
} PATH_INFO, *PPATH_INFO;
其中前三个成员用来描述一个进程的父进程PID和自身进程的PID以及路径长度信息,而最后一个成员来描述该路径的实际内容,由于路径长度是不定的,我们为了节省内存,加了一个 PathLength 的成员来描述路径长度,不会将实际储存路径的成员设置成固定的 512 大小或者 1024 大小,这样会非常浪费内存,在使用过程中,我们会想如下这种方式来给结构体分配内存和填充数据。