Проблема работы с файлом С++
Всем добрый вечер. Я создал такую структуру:
#include <stdio.h>
#include <stdlib.h>
struct File
{
FILE * stream;
}
Мне потребовался массив таких структур:
int Size = 1
File * array_of_files = new File[Size];
Реализовал метод добавления элемента в такой массив:
void create_new_file(File *&array_, &size)
{
if (size == 0)
{
return ;
}
size++;
File* new_array_of_files = new File[size];
for (int i = 0; i < size - 1; ++i)
{
new_array_of_files[i].stream = array_of_files[i].stream;
}
new_array_of_files[size - 1].stream = NULL;
delete[] array_of_files;
array_of_files = new_array_of_files;
}
Но когда я в конце программы закрываю все файлы (перед этим вызвав функцию добавления):
for (int i = 0; i < Size; ++i)
{
fclose(array_[i].stream);
}
То сразу же при i = 0 срабатывает исключение: Нарушение доступа при чтении. При отладке, когда я копирую в new_array_of_files, в переменную new_array_of_files[i].stream действительно записывается адрес из исходного массива, но после выхода из функции, при закрытии файла, в этой переменной оказывается совсем другой адрес(0xdddddddd). При чём, когда я реализовывал данную функцию в стиле ООП (Одним из полей класса был данный массив, функция create такая же, в деструкторе был цикл, который показан выше) и никаких исключений не было, всё работало. Как данную проблему можно исправить? И почему в одном случае это работает, а в другом нет?
Заранее спасибо.