У меня есть программа, которая читает текстовый файл и разделяет его на структуры глав и абзацев.
struct paragraph
{
char** lines;
int numLines;
};
struct chapter
{
struct paragraph** paragraphs;
int numParagraphs;
};
struct book
{
struct chapter** chapters;
int numChapters;
};
Вот оскорбительный фрагмент кода, в частности операторы realloc():
//int numChapters = -1;
//char**** book = (void*)0;
struct book* books = malloc(sizeof(struct book*));
books->chapters = malloc(sizeof(struct chapter));
books->numChapters = -1;
//char*** nextChapter;
struct chapter* nextChapter = malloc(sizeof(struct chapter));
while ( (nextChapter = readChapter(bookFile))->paragraphs[0] )
{
if (++(books->numChapters) > 0)
{
books = realloc(books, sizeof(struct chapter*)*books->numChapters);
books->chapters[books->numChapters - 1] = nextChapter;
}
}
books = realloc(books, sizeof(struct chapter*)*books->numChapters);
books->chapters[books->numChapters] = (void*)0;
return books;
Функции, вызываемые в этом фрагменте кода, должны работать корректно, по крайней мере, я рассчитываю на этот факт. Это должно быть проблема с неправильным управлением памятью. Спасибо за любой совет!
Я должен упомянуть, что он читает первые несколько глав, а затем получает ошибку.