gpt4 book ai didi

c++ - TerminateThread 后清理?

转载 作者:行者123 更新时间:2023-11-27 23:00:50 26 4
gpt4 key购买 nike

如何释放调用 TerminateThread 后剩余的虚拟内存?可以通过 VirtualFree 完成吗?当然如何。我完全理解 TerminateThread“危险”

最佳答案

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

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

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

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

关于c++ - TerminateThread 后清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27861767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com