gpt4 book ai didi

c - pthread_t 数组初始化的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:47 28 4
gpt4 key购买 nike

我有一个接受输入的程序 n从命令行,并作为其操作的一部分,尝试调用以下代码:

pthread_t threads[n*n];

现在,对于任何n <= 1023 ,这很好用,但是当我尝试使用 n > 1023 时,我遇到了段错误。正是这条特殊的线导致了它——我的代码没有超越它。我对为什么会发生这种情况感到有点困惑,希望得到所有可能的帮助。

最佳答案

这是因为数组的大小(即指针的大小乘以 2^20)太大而无法保存在自动内存中(即堆栈中)。您可以使用动态分配来解决此问题:

pthread_t *threads = malloc(sizeof(pthread_t) * n * n);

当然你需要在完成数组后释放这个内存:

free(threads);

关于c - pthread_t 数组初始化的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559027/

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