**已关闭。**此问题为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;
}
"我还试过什么"
- 我已经使互斥体只是一个全局变量(没有结构)
- 我已经将互斥体作为测试函数()的一部分
2条答案
按热度按时间kcugc4gi1#
您使用的是动态内存,使用后需要删除. free(test_ptr);
f87krz0w2#
在测试函数中,你需要锁定和解锁互斥锁,在主函数中之后,只需给予pthread_mutex_init(&test_ptr,NULL);.并在最后销毁互斥体pthread_mutex_destroy(&test_ptr);