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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt и sizeof()  (Прочитано 4980 раз)
Nelkor
Гость
« : Октябрь 18, 2014, 17:32 »

Вопрос, наверное, детский, но будет ли корректно работать такая конструкция?

Код:
int sizeOfTestList = sizeof(testList);

То есть сохранять в переменную sizeOfTestList размер объекта testList, какого бы класса он не был? И какие в этом случае могут быть подводные камни? Заранее благодарю)

И может быть, размер объекта лучше хранить не в Инте? А тогда в чем лучше? Я понимаю, что есть класс QSize, но имеет ли он сам фиксированный размер или нет? Инт меня привлекает именно фиксированным в 4 байта размером...
« Последнее редактирование: Октябрь 18, 2014, 17:37 от Nelkor » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Октябрь 18, 2014, 17:55 »

http://msdn.microsoft.com/ru-ru/library/4s7x1k91.aspx
"Результат оператора sizeof имеет тип size_t, целочисленный тип, определенный во включаемом файле STDDEF.H. Благодаря этому оператору можно избежать жесткого прописывания размеров данных, которые часто зависят от типа комрьютера"
Записан

Nelkor
Гость
« Ответ #2 : Октябрь 18, 2014, 18:10 »

И всё-таки будет корректно работать?)
Записан
Bepec
Гость
« Ответ #3 : Октябрь 18, 2014, 18:23 »

Смотря что смотря как. Если работать будете с объектами Qt, то скорее всего получили размер указателя Веселый
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Октябрь 18, 2014, 18:35 »

Инт меня привлекает именно фиксированным в 4 байта размером...
при сборке 64-битным компилятором приятно удивишься Веселый

размер объекта далеко не всегда строго равен сумме размеров его полей
Записан

Изучением 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
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 19, 2014, 10:33 »

То есть сохранять в переменную sizeOfTestList размер объекта testList, какого бы класса он не был? И какие в этом случае могут быть подводные камни? Заранее благодарю)
Формально да, практически нет. Пример
Код
C++ (Qt)
QString str("This is a text")
int size = sizeof(str);
Какую бы строку ни давали - всегда получите size = 4 (8 в 64 бит). Формально это верно - размер "самого объекта" 4. Но он может разместить 100 Мб в куче, а к этому sizeof уже не имеет отношения 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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