Как free и malloc работают в C?

Я пытаюсь выяснить, что случилось бы, если бы я попытался освободить указатель «из середины», например, посмотрите на следующий код:

char *ptr = (char*)malloc(10*sizeof(char));

for (char i=0 ; i<10 ; ++i)
{
    ptr[i] = i+10;
}
++ptr;
++ptr;
++ptr;
++ptr;
free(ptr);

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

большое спасибо

Ответы на вопрос(8)

Ваш ответ на вопрос