相关疑难解决方法(0)

为什么我的C malloc断言失败了?

我正在实现一个除法和征服多项式算法,所以我可以将它与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);
}
Run Code Online (Sandbox Code Playgroud)

我用a检查了大小fprintf,它是一个正整数(此时通常为50).我尝试malloc用普通号码打电话,但我仍然得到错误.我只是对正在发生的事情感到难过,到目前为止我发现的谷歌没有任何帮助.

有什么想法发生了什么?我正在试图弄清楚如何编译一个更新的GCC,如果它是编译器错误,但我真的怀疑它.

c malloc gcc assertion

71
推荐指数
3
解决办法
11万
查看次数

标签 统计

assertion ×1

c ×1

gcc ×1

malloc ×1