Я делал домашнее задание, когда наткнулся на следующую проблему.Я должен создать простое многопоточное приложение, использующее в C и использующее функции Windows API.Каждый поток будет выполнять простую задачу, поэтому я решил переработать некоторые старые вещи, которые я сделал.
У меня есть файл заголовка:
http://pastebin.com/1aJFAwBg
И источникfile:
http://pastebin.com/L127FGhG
Затем в main я делаю следующий вызов:
LoadPoem();
ProcessPoem();
SavePoem();
LoadPoem открывает файл, содержащий оригинал, выделяет буфер для ввода(переменнаяloadedPoemBuffer) и сохраняет в нем текст из файла.Затем ProcessPoem выделяет буфер для измененной версии (переменная processingPoemBuffer) и заполняет его, многократно вызывая strtok.Затем он освобождает загруженный PoeBuffer и заканчивается.Все идет нормально.Проблема возникает, когда я вызываю SavePoem (), он корректно сохраняет данные, но когда он заканчивается, он вызывает free (processingPoemBuffer) и выбрасывает исключение - поврежденная куча.Я не могу понять, почему.Мне кажется, что он выполняет точно такую же операцию, что и ProcessPoem до этого, но эта функция не дает сбоя.
Может кто-нибудь объяснить мне это?Заранее спасибо.