27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
||||||
1 | ||||||
Неправильное выделение байтов12.03.2012, 14:23. Показов 2010. Ответов 16
Метки нет (Все метки)
итого: 5. когда использовал sizeof, вывело 8. Что не так?
0
|
12.03.2012, 14:23 | |
Ответы с готовыми решениями:
16
Неправильное выделение размера массива Неправильное выделение памяти в массиве Неправильное выделение слов с ошибками QAbstractItemModel Неправильное выделение итема |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.03.2012, 14:24 | 2 |
Ksan, Выравнивание. Или 64 бита и указатель 8 байт. Но скорее выравнивание.
0
|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
12.03.2012, 14:26 [ТС] | 3 |
ForEveR, что за выравнивание?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.03.2012, 14:36 | 4 |
0
|
53 / 53 / 19
Регистрация: 10.03.2012
Сообщений: 138
|
|
12.03.2012, 14:37 | 5 |
Такова память, что выделяется ячейками. И ровно 5 никак не выделить.
0
|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
12.03.2012, 14:40 [ТС] | 6 |
ForEveR,
Duha666, хм, а я думал, что это только выделение битов округляется в большую сторону, что бы получилось 8*k.
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
12.03.2012, 14:44 | 7 |
И кстати, почему ты решил, что представление битового поля должно занимать 1 байт?
Стандарт языка считает иначе: The value of the integral constant expression may be larger than the number of bits in the object representation (3.9) of the bit-field’s type; in such cases the extra bits are used as padding bits and do not participate in the value representation (3.9) of the bit-field. Allocation of bit-fields within a class object is implementation-defined. Alignment of bit-fields is implementation-defined.
0
|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
||||||
12.03.2012, 14:48 [ТС] | 8 | |||||
CheshireCat, я где-то читал, что в битовых полях количество бит округляется в большую сторону до 8*k и выделяется k байт. Ну пример:
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
12.03.2012, 14:54 | 9 |
Более правильная формулировка тут должна быть такая: "количество бит округляется в большую сторону до CHAR_BIT*k и выделяется не менее k байт".
0
|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
12.03.2012, 14:57 [ТС] | 10 |
смысл один и тот же все же
но выделяется-то 8 байт
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
12.03.2012, 15:03 | 11 |
Ну так все правильно. 4 байта (я предполагаю, что экспериментируешь ты на x32, так?) выделяются под void *_upointer, и еще 4 - под type. Конечно, под type хватило бы и одного, но разработчикам компилятора было удобнее выделить все 4, благо Стандарт языка дает им такую возможность..... Итого - 8 байт.
0
|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
12.03.2012, 15:10 [ТС] | 12 |
проэкспериментировал и вместо int написал __int8. результат тот же
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.03.2012, 15:23 | 13 |
Ksan, Выравнивание...
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
12.03.2012, 15:28 | 14 | |||||
Компилер какой? GCC 4.7:
0
|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
12.03.2012, 15:32 [ТС] | 15 |
Dev-cpp
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.03.2012, 15:36 | 16 |
CheshireCat, Ну дык после отключения выравнивания конечно 5 будет...
В новом стандарте есть ключевое слово alignas.
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
12.03.2012, 15:42 | 17 |
Dev-cpp - это среда разработки. А, один фиг - за кулисами у нее все тот же GCC+MinGW.....
Короче, правильный ответ про sizeof - минимальный размер структуры на x32 5 байтов, а максимальный - зависит от фантазии разработчиков компилятора....... Каков бы он ни был на самом деле - Стандарту языка это не противоречит. Тебе зачем-то надо блох ловить и байты считать?
0
|
12.03.2012, 15:42 | |
12.03.2012, 15:42 | |
Помогаю со студенческими работами здесь
17
Неправильное выделение памяти под двумерный массив Выполнить чтение всех байтов с файла с помощью FileInputStream в массив байтов Сканирование байтов в памяти, и получение начального адреса байтов Если увеличить объём кластера на флешке с 4048 байтов до 8192 байтов то она будет работать быстрей? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |