Определение размера памяти, выделяемой под структуру
Размер памяти, занимаемый структурным объектом, можно вычислить, исходя из размеров элементов структуры либо с помощью операции:
sizeof (ИмяСтруктуры)
sizeof (ИмяСтруктурногоТипа)
Определение структурного типа не связано с выделением памяти под сам тип, а при каждом определении структуры (объекта) ей выделяется память в таком количестве, чтобы могли разместиться данные всех элементов. Однако стандарт языка С++ не дает гарантий, что элементы структур будут размещаться непрерывно. Причиной появления неиспользованных участков памяти («дыр») могут явиться требования выравнивания данных по границам участков адресного пространства. Эти требования зависят от реализации, от аппаратных возможностей системы и иногда от режимов (опций) работы компилятора.
Например:
sizeof(struct goods) – 22 байта (из Примера 1)
sizeof(goods) – 22 байта (из Примера 1)
sizeof coat – 22 байта (из Примера 1)
sizeof(complex) – 16 байтов (из Примера 2)
Пример 3. Программа вывода размера памяти для структурного объекта
#include <stdio.h>
struct A {
int j;
char titl[10];
char x;
} Aa, Ab={128, "Мир", 'Q'};
void main() {
printf("\nAb.j=%d Ab.titl=%s Ab.x=%c", Ab.j, Ab.titl, Ab.x);
printf("\nПамять для объекта Аа равна %d байт ", sizeof(Aa));
}
Результат выполнения программы:
Ab.j=128 Ab.titl=Мир Ab.x=Q
Память для объекта Аа равна 14 байт
Дата добавления: 2015-02-16; просмотров: 607;