Russian Qt Forum
Ноябрь 25, 2024, 11:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Структура в памяти против QT
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Структура в памяти против QT (Прочитано 7318 раз)
Zmey
Гость
Структура в памяти против QT
«
:
Апрель 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.
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Структура в памяти против QT
«
Ответ #1 :
Апрель 06, 2005, 12:38 »
есть аналогичная директива
#pragma не помню как дальше
ее можно локально в код вставить
а вообще такое лучше старатся не использовать
Записан
Zmey
Гость
Структура в памяти против QT
«
Ответ #2 :
Апрель 06, 2005, 13:33 »
#pragma pack(1) помогло. Спасибо.
Я бы с удовольствием не использовал, если бы без этого работало.
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Структура в памяти против QT
«
Ответ #3 :
Апрель 06, 2005, 15:08 »
когда структуру пишешь например в файл надо всегда
поэлементно упаковывать ее
а не просто
fwrite(&struct,1,sizeof(struct),fl);
Записан
kolob
Частый гость
Offline
Сообщений: 296
Re: Структура в памяти против QT
«
Ответ #4 :
Июнь 02, 2011, 13:48 »
Такая же ошибка. Что делать? Вываливается когда пытаюсь добавить иконку для меню
Код:
act->setIconSet(QPixmap::fromMimeSource("icon.png"));
Записан
Qt 5.11.0, Win, MinGW
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Структура в памяти против QT
«
Ответ #5 :
Июнь 02, 2011, 14:01 »
2
kolob
Когда уже на Qt4 перейдёшь? Сам же знаешь, что здесь знатоков Qt3 практически нет.
Записан
Qt 5.11/4.8.7 (X11/Win)
kolob
Частый гость
Offline
Сообщений: 296
Re: Структура в памяти против QT
«
Ответ #6 :
Июнь 02, 2011, 14:16 »
Цитировать
Когда уже на Qt4 перейдёшь?
Да вот уже собираюсь на 4.6 переходить с нового проекта. А тут старый поддерживать надо, а он на 3-ке.
Цитировать
Сам же знаешь, что здесь знатоков Qt3 практически нет.
Но некоторые же когда то начинали и с 3-й.
Записан
Qt 5.11.0, Win, MinGW
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Структура в памяти против QT
«
Ответ #7 :
Июнь 08, 2011, 01:17 »
пакуй структуры через #pragma pack(1) или аттрибуты
http://sig9.com/articles/gcc-packed-structures
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...