Я использую следующую функцию для выделения памяти:
int qmem_alloc(unsigned int num_bytes, void ** rslt){
void** temp;
if(rslt == NULL)
return -1;
temp = (void **)malloc(num_bytes);
if(temp == NULL)
return -2;
else
rslt = temp;
return 0;
}
И следующую функцию для перераспределения памяти:
int qmem_allocz(unsigned num_bytes, void ** rslt){
void** temp;
void *test = (void *)malloc(10);
if(rslt == NULL)
return -1;
temp = (void **)realloc(rslt, num_bytes);
printf("here");
if(temp == NULL)
return -2;
else
// free(rslt)
return 0;
}
Вот моя основная функция:
struct qbuf { int idx; char data[256]; };
void main(){
struct qbuf * p = NULL;
printf("%d\n",qmem_alloc(sizeof(struct qbuf), (void **)&p));
printf("%d\n",qmem_allocz(100*sizeof(struct qbuf), (void **)&p));
}
Программа может выделять память, но происходит сбой при перераспределении.Вот ошибка:
malloc.c: 2868: mremap_chunk: утверждение `((размер + смещение) & (GLRO (dl_pagesize) - 1)) == 0 'не удалось.
Почему это происходит?Как я могу это исправить?