Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Laikki от Ноябрь 26, 2012, 11:17



Название: Ошибка Segmentation Fault
Отправлено: Laikki от Ноябрь 26, 2012, 11:17
Доброго времени суток. Подскажите пожалуйста, в чем причина.
Есть кусок кода
Код:
    QFile file("Questions.dat");
    file.open(QIODevice::ReadOnly);
    QDataStream ds(&file);
    char* qa;
    ds.readRawData(qa,25);
    file.close();
Вылетает с ошибкой Segmentation Fault на строчке ds.readRawData(qa,25); Опробовано на двух системах - Windows 8 x64, библиотека 4.7.4, антивирус встроенный и Windows 7 x64, библиотека 4.8.3 и антивируса вообще нет.

Поэкспериментировал, если читать 1-24 байт, то ошибки нет, 25 и выше - всегда ошибка. Но читаю к примеру 10 символов, выдает 123456790 и иероглиф в конце, полный рандом получился, указываю например семь байт - результат нормальный, указываю восемь, уже лишние данные в конце.

Заранее спасибо за помощь


Название: Re: Ошибка Segmentation Fault
Отправлено: mutineer от Ноябрь 26, 2012, 11:23
qa указывает непойми куда, возможно что в невыделенную память, а ты туда данные пишешь. Вот и вылетает


Название: Re: Ошибка Segmentation Fault
Отправлено: Vass от Ноябрь 26, 2012, 12:34
Код:
char* qa =  new char[25];
если планируется эти данные потом куда-то выводить как строку, то делать массив на один символ больше и писать в конец ноль не забывать.