gpt4 book ai didi

iphone - NSThread 有单独的堆吗? pthread 怎么样(在 iPhone 上)

转载 作者:行者123 更新时间:2023-12-03 17:29:53 25 4
gpt4 key购买 nike

如果我分离一个 NSThread,Cocoa 会在单独的内存堆或内存区域中运行它吗?例如,如果我要分离一个线程,使用 malloc 创建一个大缓冲区,然后让线程退出,我会通过某种自动线程清理来恢复该内存,还是会泄漏?

如果我改用 POSIX 线程 (pthread) 会怎样?

请注意,我对 ObjC 分配或自动释放池不感兴趣,我说的是低级缓冲区,例如int * foo = malloc(100000);

最佳答案

NSThread——就像pthread——将有一个单独的堆栈,但将与任务中的其余线程共享相同的堆。各个任务的线程和堆是隔离的。

您描述的模式——在线程中分配,让线程退出——将会泄漏;内存将不会被恢复。

无论您使用哪种线程。

对于大小分配非常有限的情况,您可以使用堆栈缓冲区,该缓冲区将在线程退出时被回收。然而,线程的堆栈大小是有限的,如果您依赖于大的堆栈分配,很容易耗尽堆栈并导致整个应用程序崩溃。

完成后使用 malloc() 和 free()。

关于iphone - NSThread 有单独的堆吗? pthread 怎么样(在 iPhone 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475698/

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