Запись дерева в файл и восстановление
После записи/восстановления дерева из файла я запускаю функцию вывода дерева на консоль и у меня вылетает. До вылета видно, что на консоль выведен корень, один элемент второго уровня, два элемента третьего и элементы 4-го уровня, но только у одного элемента третьего. Проще говоря консоль вылетает когда идет попытка вывода элементов 4-го уровня второго элемента третьего. Не знаю в чем ошибка. Элементы 4-го уровня хранятся в виде односвязного списка.
void storeTree(FILE *f){
fwrite(root,sizeof(NTrade),1,f);
Seller *sAr = root->sellerArray;
for(int i = 0; i < root->sellerCount; i++){
fwrite(&sAr[i], sizeof(Seller),1, f);
Product* *pAr = sAr[i].pProductArray;
for(int j = 0; j < sAr[i].productCount; j++){
fwrite(pAr[j], sizeof(Product), 1, f);
Realiz *pR = pAr[j]->firstRealiz;
while(pR != NULL){
fwrite(pR, sizeof(Realiz), 1, f);
pR = pR->nextRealiz;
}
}
}
fclose(f);
}
void restoreTree(FILE *f){
if(root != NULL)
delTree(root);
root = new NTrade;
fread(root,sizeof(NTrade),1,f);
root->sellerArray = new Seller [root->arCapacity];
for(int i = 0; i < root->sellerCount; i++){
fread(&root->sellerArray[i], sizeof(Seller), 1, f);
Seller *se = &root->sellerArray[i];
se->parent = root;
se->pProductArray = new Product*[se->arCapacity];
for(int j = 0; j < se->productCount; j++){
Product *pr = new Product();
fread(pr, sizeof(Product), 1, f);
pr->parent = se;
se->pProductArray[j] = pr;
if(pr->firstRealiz != NULL){
Realiz *rl = new Realiz();
fread(rl, sizeof(Realiz), 1, f);
rl->parent = pr;
pr->firstRealiz = rl;
while(rl->nextRealiz != NULL){
Realiz *rlnxt = new Realiz();
fread(rlnxt, sizeof(Realiz), 1, f);
rlnxt->parent = pr;
rl->nextRealiz = rlnxt;
rl = rl->nextRealiz;
}
}
}
}
fclose(f);
}
