Оператор Sizeof

Префикс унарного оператора sizeof возвращает целочисленную константу, представляющую размер пространства памяти (в байтах), используемого его операндом (определяется его типом, за некоторыми исключениями).

Оператор sizeof может принимать в качестве операнда идентификатор типа или унарное выражение. Нельзя использовать sizeof с выражениями типа функции, неполными типами, заключенными в скобки именами таких типов или с lvalue, обозначающим объект битового поля.

Sizeof в применении к выражению

Если оператор SizeOf применяется к выражению, размер операнда определяется без вычисления выражения (и, следовательно, без побочных эффектов). Результатом операции будет размер типа результата выражения.

Sizeof в применении к типу

Если оператор SizeOf применяется к идентификатору типа, sizeof возвращает размер указанного типа. Единицей измерения размера типа является sizeof (byte), эквивалентный одному байту.

Thus:

sizeof(byte)            // возвращает 1 
sizeof(integer)         // возвращает 2 
sizeof(dword)           // возвращает 4 
sizeof(real)            // возвращает 4 

Если операнд не является параметром типа массива, результатом будет общее число байтов в массиве (другими словами, имя массива не преобразуется в Тип указателя):

var  i, j : integer;
     samples : array[10] of integer;
...
j := sizeof(samples[1]);  // j = sizeof(integer) = 2 
i := sizeof(samples);     // i = 10*sizeof(integer) = 20 

Если операнд является параметром, объявленным как тип массива или тип функции, sizeof дает Размер указателя. При применении к записям sizeof дает общее число байтов, включая любое заполнение. Оператор sizeof не может быть применен к функции.