Название: Структура в памяти против QT Отправлено: Zmey от Апрель 06, 2005, 10:06 Есть указатель на область в памяти, и в этой памяти лежат: сначала DWORD, потом __int64, потом WORD, потом BYTE. То есть 4 байта, 8, 2 и 1.
Делаю структуру: struct stnameAllFiles { Q_UINT32 dwFileSize; Q_UINT64 qwLastTime; Q_UINT16 wNameLenght; Q_UINT8 iTypeRecord; }; И указатель на нее: stnameAllFiles* pstAllFiles; Присваиваю этому указателю: pstAllFiles = (stnameAllFiles*)lpv; lpv - указатель на память, где лежат числа. Так вот на pstAllFiles->dwFileSize выделяется 8 байт, на qwLastTime - 8 байт, на wNameLenght - 2, на iTypeRecord - 2. Посоветовали в настройках Visual Studio в Project - Settings... - C/C++ - Category: Code Generation - Struct member alignment поставить 1 Byte (а стояло 8 Byte). Но теперь в конструкторе функция QComboBox::insertStringList выдает Unhandled exception in MyProg.exe (QT-MT333.DLL): 0xC0000005: Access Violation. Как это победить? Qt 3.3.3, Visual Studio 6 SP6, WinXP SP2. Название: Структура в памяти против QT Отправлено: Admin от Апрель 06, 2005, 12:38 есть аналогичная директива
#pragma не помню как дальше ее можно локально в код вставить а вообще такое лучше старатся не использовать Название: Структура в памяти против QT Отправлено: Zmey от Апрель 06, 2005, 13:33 #pragma pack(1) помогло. Спасибо.
Я бы с удовольствием не использовал, если бы без этого работало. Название: Структура в памяти против QT Отправлено: Admin от Апрель 06, 2005, 15:08 когда структуру пишешь например в файл надо всегда
поэлементно упаковывать ее а не просто fwrite(&struct,1,sizeof(struct),fl); Название: Re: Структура в памяти против QT Отправлено: kolob от Июнь 02, 2011, 13:48 Такая же ошибка. Что делать? Вываливается когда пытаюсь добавить иконку для меню
Код: act->setIconSet(QPixmap::fromMimeSource("icon.png")); Название: Re: Структура в памяти против QT Отправлено: GreatSnake от Июнь 02, 2011, 14:01 2 kolob
Когда уже на Qt4 перейдёшь? Сам же знаешь, что здесь знатоков Qt3 практически нет. Название: Re: Структура в памяти против QT Отправлено: kolob от Июнь 02, 2011, 14:16 Цитировать Когда уже на Qt4 перейдёшь? Да вот уже собираюсь на 4.6 переходить с нового проекта. А тут старый поддерживать надо, а он на 3-ке.Цитировать Сам же знаешь, что здесь знатоков Qt3 практически нет. Но некоторые же когда то начинали и с 3-й.Название: Re: Структура в памяти против QT Отправлено: Alex Custov от Июнь 08, 2011, 01:17 пакуй структуры через #pragma pack(1) или аттрибуты http://sig9.com/articles/gcc-packed-structures
|