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:根据大学项目的要求,我应该只使用 pthread 而不是 fork()

4

1 回答 1

3

此错误与线程无关。这表明您已经破坏了 malloc 用于记账目的的内存,可能是通过溢出您从 malloc 获得的块中的缓冲区。

任何线程都可以创建新线程;对此没有任何限制。

于 2012-06-24T12:20:39.593 回答