我是使用线程的新手,我认为一个很好的练习是编写一个与线程一起工作的队列。但是,出了点问题,我怀疑消费者线程试图访问相同的数据或其他东西。我使用互斥锁,但我可能误解了一些东西......
我收到此错误(大约每三次运行):
*** glibc detected *** ./t_queue_test: double free or corruption (fasttop): 0x0000000002114610 ***
代码比较长,所以我把它贴在了 pastebin 上,但如果那不正确,我可以把它贴在这里。
t_queue.h -> http://pastebin.com/2KYmujeE
t_queue.c -> http://pastebin.com/1wZPMwDB
t_queue_test.c -> http://pastebin.com/QKCTQWaf
我认为错误发生在函数'get_q'中,我已经在代码中标记了它。
感谢您的任何指示或建议。我已经在 stackoverflow 上挖掘了类似的问题,我会再挖掘一些!Valgrind 也没有显示任何东西。