TerminateThread 后清理?

Cleanup after TerminateThread?

如何释放调用 TerminateThread 后剩余的虚拟内存?可以通过 VirtualFree 完成吗?当然如何。 TerminateThread.

"Dangers"完全理解

在非托管进程中,没有从外部整理内存的现实方法。

可以通过多种不同方式分配内存。最终,一切都从调用 VirtualAllocVirtualAllocEx 等开始。但在实践中,运行时库总是使用子分配堆管理器。这些堆分配器将通过调用 VirtualAlloc 获取内存,但随后会分发子块。堆管理器通常在进程中的线程之间共享。所以你无法从外部知道如何释放这些子块。

即使我们没有子分配器,你怎么知道 VirtualAlloc 分发的哪些块你可以销毁?一个线程可以通过调用 VirtualAlloc 来分配内存,并要求内存在分配线程中存在并被另一个线程销毁。

但是,如果您乐于放弃所有这些,并且只想销毁堆栈(根据您的意见),那么本文将向您展示如何使用 RtlFreeUserThreadStack 进行销毁:http://www.nicklowe.org/2012/01/thread-termination-dont-leak-the-stack/