-1

C プログラムを書いているときに、次のような問題に遭遇しました。

malloc.c:3074: sYSMALLOc: アサーション (old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2]))) - __builtin_offsetof (struct malloc_chunk) 、 fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~(((2 * (sizeof) (size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0) 失敗しました。

修正するのを手伝ってください、事前に感謝します!

4

1 に答える 1

2

メモリ割り当てのために保持されている管理が破損しているようです。私の推測では、このエラーが発生する前に、バッファ オーバーフローのようなものがどこかにあると思います。

エラーは以前の問題の結果であるため (私が正しいと仮定して)、これを修正するのはやや難しい問題になる可能性があります。おそらく、valgrind のようなツールは、メモリへの不正な書き込みを検出するのに役立ちます。問題を示す小さなプログラムがある場合は、そのコードを質問に追加することをお勧めします。

于 2009-07-08T13:22:34.970 に答える