Я получаю ошибку утверждения (выражение: crtisvalidheappointer), когда я пытаюсь освободить свой круговой буфер. Почему это происходит?не может освободить память (ошибка утверждения)
Соответствующие Структуры:
typedef struct quote {
unsigned int seconds;
double rate;
} quote;
typedef struct cbuf {
unsigned int max;
unsigned int start;
unsigned int end;
unsigned int size;
quote *quotes;
} cbuf;
Блок кода, который mallocs и освобождает:
#define INITIAL_SIZE 10
static cbuf cb1 = {INITIAL_SIZE, 0, 0, 0, NULL};
cb1.quotes = (quote*)malloc(INITIAL_SIZE * sizeof(quote));
if(cb1.quotes == NULL)
{
printf("Error - memory allocation failed.");
exit(1);
}
free(&cb1);
Вы освободив локальную переменную стека. SideNote: Не бросайте 'malloc()' при программировании на C. Его плохая привычка. – WhozCraig
Вы хотите 'free (& (cb1.quotes))', так как 'cb1.quotes' - это то, что вы выделили для памяти для – maditya