gpt4 book ai didi

c++ - CreateThread 后跟 TerminateThread 留下大量内存

转载 作者:太空宇宙 更新时间:2023-11-04 14:38:15 26 4
gpt4 key购买 nike

我使用 CreateThread 然后使用 TerminateThread 来取消线程。看起来堆栈空间仍然被分配。有办法解决这个问题吗?我没有使用任何形式的动态内存调用,例如 malloc/new。线程不必优雅地退出。 10 个线程留下高达 5 MB 的内存!线程都在代码的不同部分,那么有没有一种简单的方法来实现线程间通信系统,它可以告诉它们全部退出,从而重新定位堆栈?

最佳答案

在大多数情况下,您应该使用TerminateThread()。如果您在应用程序中创建新线程,您有责任确保这些线程正常退出。当您使用 TerminateThread() 时,可能会留下各种资源,因为此函数只是终止线程而不调用清理函数。

TerminateThread documentation

您应该做的是使用事件(或其他信号方法)告诉您的线程它们应该关闭。当线程在内部接收到消息(事件发出信号或等待期满等)时,线程函数可以在内部清理并返回。这样您就可以正确退出您的线程,而不会留下一团糟。

关于c++ - CreateThread 后跟 TerminateThread 留下大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242252/

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