Advertisement

《Windows核心编程》读书笔记十六

阅读量:

第十六章 线程栈

本章内容

16.1 C/C++运行库的栈检查函数

16.2 Summation示例程序

系统会在用户的进程地址空间预先分配出特定区域用于存储相关数据和程序指令。当系统为进程及其子线程分配内存空间时,默认会先为每个进程预留必要的资源块,并根据需求动态扩展以满足实际运行需求

另一种系统在用户进程地址空间预定区域的情况是分配线程栈。

每当系统生成一个新线程时,在其对应的线程栈上将分配一块内存的空间区域,并对该区域进行物理内存块的分配。通常情况下,在内存管理中,默认每条新线程将预留1MB的空间用于其运行环境,并从物理内存中划出两个页来作为本地工作区。

可以通过编译器的/F选项或者连接器的/STACK

/Freeserve

/STACK:reserve[,commit]

该连接器会将所需的栈大小参数记录在.exe或.dll类型的PE文件头部字段中。当系统为创建线程而需预先分配内存时,会根据PE文件头部中指定的内存范围来确定地址空间.在启动线程时通常会调用CreateThread或_beginthreadexh等库函数.

也可以指定栈初始大小。如果传递0则使用PE文件头中默认定义的大小。

例如以下例子

![](https://ad.itadn.com/c/weblog/blog-img/images/2025-05-31/GKzLoIYFvg

全部评论 (0)

还没有任何评论哟~