我正在实现分而治之多项式算法,因此可以将其对照OpenCL实现进行基准测试,但无法开始malloc工作。当我运行程序时,它会分配一堆东西,检查一些东西,然后将其发送size/2给算法。然后,当我malloc再次点击该行时,它会吐出以下内容:malloc.c:3096: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)'失败。中止有问题的行是:int *mult(int size, int *a, int *b) { int *out,i, j, *tmp1, *tmp2, *tmp3, *tmpa1, *tmpa2, *tmpb1, *tmpb2,d, *res1, *res2; fprintf(stdout, "size: %d\n", size); out = (int *)malloc(sizeof(int) * size * 2);}我用来检查大小fprintf,它是一个正整数(通常为50)。我也尝试malloc用一个普通号码打电话,但仍然出现错误。我只是对正在发生的事情感到迷惑,到目前为止,我发现Google都没有任何帮助。有什么想法吗?我试图弄清楚如何编译更新的GCC以防出现编译器错误,但我真的对此表示怀疑。
3 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
99.9%的可能性是您损坏了内存(缓冲区溢出或溢出,在释放指针后写入指针,在同一指针上两次调用free等)。
在Valgrind下运行代码,以查看程序在哪里做错了什么。
- 3 回答
- 0 关注
- 1034 浏览
添加回答
举报
0/150
提交
取消