LINUX.ORG.RU

Необъяснимая ошибка с функцией fclose и STL объектами C++


0

0

Есть метод класса

void Cfg::parse( const std::string& file_name)
{
   if ( (f = fopen( file_name.c_str(), "r") ) == NULL ) exit(1);
   printf("Это я ещё вижу :) \n");
   std::string str = "123";
   if (f) fclose(f);
   printf("А это уже нет \n");
}

При выполнении этого метода прога валится по Segmentation fault!!!
Конкретно на функции fclose(). Причём происходит это ТОЛЬКО если создать объект std::string!!! Если строку не создавать всё отрабатывает идеально!!!
Что делать то??? Слышал, что например Герберт Шилд не рекомендует юзать С-ую fclose с С++-ой STL library. Не верится правда в это, но иначе просто никак не объяснить поведение!!!
СИСТЕМА: ReaHat 7.3    2.4.18-3   g++ (GCC) 4.0.0 20040927 (experimental)

> СИСТЕМА: ReaHat 7.3 2.4.18-3 g++ (GCC) 4.0.0 20040927 (experimental)

Это же бета версия ГЦЦ... Попробуйте, скажем, на 3.4.3. Если ошибка повторяется, тогда будем думать.

anonymous
()
Ответ на: комментарий от kri

и что ж ты понял, расскажи, может кому полезно будет

anonymous
()

Если ошибки появляются в левых местах значит течет память, используете неинициализированные указатели, выходите за границы массивов памяти и тд.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.