Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2010, 16:08   #1
FreTFuL
Новичок
Джуниор
 
Регистрация: 02.05.2010
Сообщений: 2
По умолчанию Проблема с виделением памяти!

У меня єсть фунция которую использую для вивода информации со списка структур в файл, оно виводит.
PHP код:
void WriteOneFilmINFO(Film *p,FILE *stream){
    
fwrite(p->FName,sizeof(char[64]),1,stream);
    
fwrite(p->FDirector,sizeof(char[64]),1,stream);
    
fwrite(p->FMain_Role,sizeof(char[64]),1,stream);
    
fwrite(p->FUser,sizeof(char[64]),1,stream);
    
fwrite(p->FLicen,sizeof(char[64]),1,stream);
    
fwrite(p->Flang,sizeof(char[64]),1,stream);
    
fwrite(&p->FYear,sizeof(int),1,stream);
}
void WriteInfFile(Film *p){
    if(
p->next==NULL){
        
printf("Немає данних для збереження до файлу!\n");
        return;
    }
    
FILE *stream fopen("data.dat","wb");
    for(
Film *i=p->next;i!=NULL;i=i->next)
        
WriteOneFilmINFO(i,stream);
    
fclose(stream); 
Дгурой функцией я питаюсь считать ети данние из файла.
Но после первого круга при сосдании нового елемента списка оператор new видает ошибку
PHP код:
film-catalogmalloc.c:3096sYSMALLOcAssertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted 
Ну и собственно код которим питаюсь считовать:

PHP код:
Film *ReadFilmsToList(Film *p,FILE *stream){
    
p->next = new Film;  //На етом етапе при дебаге повляється ошибка!
    
p->next->pred=p;
    
p=p->next;
    
p->next =NULL;
    
fread(p->FName,sizeof(char[64]),1,stream);
    
fread(p->FDirector,sizeof(char[64]),1,stream);
    
fread(p->FMain_Role,sizeof(char[64]),1,stream);
    
fread(p->FUser,sizeof(char[64]),1,stream);
    
fread(p->FLicen,sizeof(char[64]),1,stream);
    
fread(p->Flang,sizeof(char[64]),1,stream);
    
fread(&p->FYear,sizeof(int),1,stream);
    return  
p;
}
void ReadFilms(Film *p){
    
FILE *stream;
  
stream fopen("data.dat","rb");
  while(!
feof(stream)){
  
p=ReadFilmsToList(p,stream);
   }
    
fclose(stream);

Подскажите пожалуйста в чом проблема! Очень буду благодарен!
FreTFuL вне форума Ответить с цитированием
Старый 07.05.2010, 20:23   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

попробуй так:
Код:
Film *new_film = new Film;
p->next = new_film;

Последний раз редактировалось NiCola999; 07.05.2010 в 20:26.
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы памяти romario1091 Общие вопросы C/C++ 1 29.04.2010 16:00
самописный assert: проблема с утечкой памяти) sashonk Общие вопросы C/C++ 2 26.04.2010 15:58
Освобождение памяти Seran4ek Общие вопросы Delphi 7 21.12.2009 18:07
Проблема выделения динамической памяти в С++ oxygen90 Помощь студентам 3 14.09.2009 21:47
До выделение памяти MAKTE Общие вопросы C/C++ 4 20.05.2008 21:34