首先,这是valgrind给我的消息(这只是一个错误,我多次得到相同的消息)

==25248== Invalid write of size 4
==25248==    at 0x4024B3A: free (vg_replace_malloc.c:366)
==25248==    by 0x8048F5E: sthread_free_ctx (sthread_ctx.c:86)
==25248==    by 0x80489C1: sthread_user_exit (sthread_user.c:105)
==25248==    by 0x804883C: dispatcher (sthread_user.c:40)
==25248==  Address 0x41a6148 is 65,376 bytes inside a block of size 65,536 free'd
==25248==    at 0x4024B3A: free (vg_replace_malloc.c:366)
==25248==    by 0x8048F5E: sthread_free_ctx (sthread_ctx.c:86)
==25248==    by 0x80489C1: sthread_user_exit (sthread_user.c:105)
==25248==    by 0x804883C: dispatcher (sthread_user.c:40)

我不明白,因为当我没有足够的空间时,我已经习惯了这个错误,所以为什么当我试图释放一些东西时,我会得到这个错误??正在写什么?
谢谢

最佳答案

很难用这么少的信息(特别是:没有代码)来判断,但在我看来,您可能试图调用指针上的free,该指针指的是内存区域中的偏移量,该偏移量已被先前对free的调用释放。free需要操作堆数据结构,因此尝试写入内存区域并不奇怪。

07-28 12:39