C语言 极其简单的互斥代码给出一个分段错误[已关闭]

jxct1oxe  于 2022-12-11  发布在  其他
关注(0)|答案(2)|浏览(116)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。

这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
Improve this question

已解决07/12另一个文件是这里的罪魁祸首!
问题这个非常短的Mutex代码似乎在给我一个分段错误。请参见下图:

下面提供了重现此问题的代码:

struct test_struct {

    pthread_mutex_t test_lock;

} *test_ptr;

void test(){

    test_ptr = malloc(sizeof(struct test_struct));
    pthread_mutex_init(&test_ptr->test_lock, NULL);
    pthread_mutex_lock(&test_ptr->test_lock);
    fprintf(stderr, "Reached here\n");
    return;
}

int main(int argc, char *argv[])
{
    test();
    return 0;

}

"我还试过什么"

  • 我已经使互斥体只是一个全局变量(没有结构)
  • 我已经将互斥体作为测试函数()的一部分
kcugc4gi

kcugc4gi1#

您使用的是动态内存,使用后需要删除. free(test_ptr);

f87krz0w

f87krz0w2#

在测试函数中,你需要锁定和解锁互斥锁,在主函数中之后,只需给予pthread_mutex_init(&test_ptr,NULL);.并在最后销毁互斥体pthread_mutex_destroy(&test_ptr);

相关问题