Я выделяю память для массива, но я перемещаюсь туда, где указатель немного указывает вперед. Доступ к элементам работает нормально. Однако он начал создавать проблему с освобождением выделенной памяти. Malloc жалуется, что освобожденный указатель никогда не выделялся. Проблема может быть воспроизведена с помощью этого упрощенного кода:
int *pointer = malloc(sizeof(int)) + 1;
free(pointer - 1);
Я начал экспериментировать и нашел это небольшое изменение кода для работы.
int *pointer = malloc(sizeof(int));
pointer += 1;
free(pointer - 1);
Что такое + = выполнение отличается от простого добавления 1 в указатель malloc возвращает в одной строке?