Кто-нибудь может указать, почему у меня появляется эта ошибка 'mallo c. c: 2369: sysmallo c: Assertion'? - PullRequest
0 голосов
/ 27 марта 2020

Я слышал, что эта ошибка, связанная с памятью, является одной из самых неприятных ошибок памяти. Я уверен, что это связано с памятью, выделенной для некоторой структуры, которую я объявил. Ниже приводится структура, которую я использую.

struct bitmap
{
    ST_INT* ps32bitmaparr;
    ST_INT* ps32bitposarr;
};
typedef struct bitmap BITMAP;

BITMAP* gpbitmap;

Я выделил память для структуры в функции. Я установил указатель структуры на глобальный указатель с именем 'gpbitmap'.

pbitmap = safe_malloc(sizeof(BITMAP));
if(s32tot != 0)
{
    ps32bitmaparr = safe_malloc(sizeof(ST_INT)*s32tot+1);
    ps32bitposarr = safe_malloc(sizeof(ST_INT)*s32tot+1);   
}

Затем я освободил память следующим образом.

if(gpbitmap != NULL)
{
    sxd_process_arb_data(DataEntry->dataBuf, rt_array, rtlen, NULL, &mlog_arb_log_ctrl, NULL);      
    free(gpbitmap->ps32bitmaparr);
    free(gpbitmap->ps32bitposarr);
    free(gpbitmap);
}

Затем я Я получил эту ошибку.

malloc.c:2369: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.

Поскольку я работаю над встроенной системой, я точно не знаю, как использовать valgrind в этой системе. Таким образом, любой, кто может обнаружить любые возможные ошибки, был бы очень полезен.

Заранее спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...