Russian Qt Forum
Ноябрь 24, 2024, 03:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Неадекватное поведение QTextStream  (Прочитано 2930 раз)
HirurG.
Гость
« : Декабрь 20, 2011, 17:25 »

Здравствуйте! Я столкнулся с проблемой, которая выносит мне мозг весь сегодняшний день Непонимающий
есть фрагмент кода:
Код:
QFile policy("policy.txt");
policy.open(QIODevice::WriteOnly);
QTextStream out(&policy);
for(int i = 0; i < n; i++)
    for(int j = 0; j < m; j++)
        out << AccesMatrix[i][j] + "\n";
policy.close();
здесь файл заполняется из таблицы и всё было бы хорошо, НО после выполнения строки
Код:
policy.close();
программа должна выходить из функции, а вместо этого отладчик перескакивает на
Код:
QTextStream out(&policy);
, потом на
Код:
QFile policy("policy.txt");
и так далее до ошибки
Цитировать
Приложение остановлено, так как оно получило сигнал от операционной системы.
Сигнал:
SIGSEGV
Назначение:
Segmentation fault
мне кажется что я что-то не так делаю с QTextStream Грустный помогите пожалуйста
« Последнее редактирование: Декабрь 20, 2011, 18:42 от HirurG. » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Декабрь 20, 2011, 17:46 »

может этот участок кода вызывается несколько раз откуда-то? сам код выглядит корректно.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
HirurG.
Гость
« Ответ #2 : Декабрь 20, 2011, 17:53 »

Цитировать
может этот участок кода вызывается несколько раз откуда-то? сам код выглядит корректно.
во-первых: тогда бы функция выполнялась сначала, а она перескакивает именно на строчку
Код:
QTextStream out(&policy);
и во-вторых: пошаговая отладка идёт по коду вверх Непонимающий причём не по всем строкам подряд
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Декабрь 20, 2011, 18:13 »

может второй поток?..

выложи минимальный компилируемый проект с проявляющейся ошибкой. вот такой код работает без проблем:
Код
C++ (Qt)
#include <QApplication>
#include <QTextStream>
#include <QFile>
 
int main(int argc, char **argv)
{
   QApplication a(argc, argv);
 
   QFile f("a.txt");
   if (!f.open(QIODevice::WriteOnly))
   {
       qFatal("file wasn't created");
   }
   QTextStream s(&f);
   for (int i = 0; i < 4; i++)
       for (int j = 0; j < 5; j++)
           s << (i + j + i * j) << "\n";
   f.close();
 
   return a.exec();
}
 
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
HirurG.
Гость
« Ответ #4 : Декабрь 20, 2011, 18:34 »

проблема решилась неожиданно. ошибка возникала из-за того, что выше по коду при заполнении был пропущен один элемент массива. после обнаружения и исправления ошибки программа перестала "вылетать". а отладчик, который вместо завершения "ползёт" по коду вверх скорее всего совершает какие-то неведомые мне операции с памятью, но работает всё отлично  Улыбающийся
kambala, спасибо за поддержку Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 23.