0

私は長い間 C を使用していなかったので、別のスレッドからスレッドを作成できるかどうか覚えていません。試してみると、次のエラーが表示されます。

sYSMALLOc: Assertion `(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)' failed.

中止しました

別のスレッドからスレッドを開始する回避策はありますか? 機能させるために属性に設定する必要がある特別なものはありますか?

ありがとう

PS: 大学のプロジェクトで要求されているように、fork() ではなく pthread のみを使用する必要があります。

4

1 に答える 1

3

このエラーは、スレッドとは関係ありません。これは、おそらく malloc から取得したブロック内のバッファをオーバーフローさせることによって、帳簿の目的で malloc によって使用されるメモリが破損したことを示しています。

どのスレッドでも新しいスレッドを作成できます。それに制限はありません。

于 2012-06-24T12:20:39.593 に答える