OpenCL 구현에 대해 벤치마킹 할 수 있도록 분할 및 정복 다항식 알고리즘을 구현하고 있지만 malloc
작업을 수행 할 수 없습니다 . 프로그램을 실행하면 여러 가지를 할당하고 몇 가지 사항을 확인한 다음 size/2
알고리즘 에을 보냅니다 . 그런 다음 malloc
다시 라인을 쳤을 때 다음과 같이 뱉어냅니다.
malloc.c:3096: 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.
Aborted
문제의 라인은 다음과 같습니다.
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를 컴파일하는 방법을 알아 내려고 노력하고 있지만 정말 의심 스럽습니다.