在 Win32 平台上写入内存缓冲区并检查它是否已满并出现 SEH 异常?

Write to a memory buffer and check if it is full with a SEH exception on Win32 platform?

是否可以使用 Win32 API 分配一个大约 64KB 大小的内存缓冲区,并在该缓冲区之后有某种 "guard zone"(我不知道正确的术语)所以如果缓冲区已满,C++ 代码将写入缓冲区并抛出 SEH 异常并尝试写入 "guard zone"?

是的。使用 VirtualAlloc。与 VirutalProtect 结合使用,您甚至可以使此保护区仅为内存页面大小(4096 字节,而不是整个 64KB)。

请注意,堆栈由OS处理,您只能通过SetThreadStackGuarantee控制它来设置堆栈溢出前的缓冲区数量,以及_resetstkoflw修复(恢复) 在堆栈溢出异常被 hadled 后守卫。