我有一个奇怪的问题,直到现在我还没有经历过。
我创建了两个线程,每个线程基本上打开一个FILE*
来将一些数据写入磁盘。
现在,写入部分本身不会导致运行时问题(输出似乎已损坏),但是当我在这两个单独的线程中关闭两个不同的 FILE*
时,所有地狱都会松动。
我看到一个帖子_IO_buf_base
指向0x7ffff66d3000
,而另一个帖子_IO_write_end
指向0x7ffff66d3000
。也许这就是fclose上升的原因:
*** Error in `/home/raid/Documents/Temp/TemperatureMonitoringC/Debug/TemperatureMonitoringC': free(): invalid next size (normal): 0x00007ffff0000950 ***
*** Error in `/home/raid/Documents/Temp/TemperatureMonitoringC/Debug/TemperatureMonitoringC': free(): invalid next size (normal): 0x00007ffff0003540 ***
我很确定我不是第一个搞砸了它的人。有人可以帮忙吗?我在谷歌上找不到足够明确的引用。
两个线程的调试器截图:
答案 0 :(得分:0)
我回来的可能原因是:
我有线程,我独立地摩托着记忆,然后释放它。我读here,free应该与malloc调用的顺序完全相反。
由于线程基本上是异步的,并且无法真正强制执行无malloc的调用顺序。
当然,我想知道是否需要跨线程的无malloc调用顺序。
有人至少可以确认我是否正确思考?