Returns the size of a variable or type in bytes.
Syntax
Description
The
SizeOf operator returns an
Integer value: the number of bytes taken up by a
variable or
DataType (including the data fields of a UDT).
Different from
Len, when used with fixed-length strings (including fixed-length
ZStrings and
WStrings) it will return the number of bytes they use, and when used with variable-length strings, it will return the size of the string descriptor.
If there is both a user defined type and a variable visible with the same name in the current scope, the user defined type takes precedence over the variable. To ensure that the
SizeOf takes the variable instead of the user defined type, wrap the argument to
SizeOf with parentheses to force it to be seen as an expression. For example
Sizeof((variable)).
Note: When used with arrays,
SizeOf returns the size of a single element of the array. This differs from its behavior in C, where arrays could only be a fixed size, and
sizeof() would return the number of it used.
For clarity, it is recommended that you avoid this potential confusion, and use
SizeOf directly on an array element or the array datatype doing
SizeOf(array(i)) or
SizeOf(Typeof(array)), rather than the whole array doing
SizeOf(array).
Remark: When used with a dereferenced z/wstring pointer,
SizeOf always returns the number of bytes taken up by one z/wstring character.
Example
Print SizeOf(Byte) ' returns 1
Type bar
a As Integer
b As Double
End Type
Dim foo As bar
Print SizeOf(foo)
Version
SizeOf was not returning the size of the data fields of a UDT.
When a variable from a given namespace was accessed with the namespace's name prefix, the argument to SizeOf had to be wrapped with parentheses to force it to be seen as an expression. For example Sizeof((namespace_name.variable)).
Dialect Differences
- Not available in the -lang qb dialect unless referenced with the alias __Sizeof.
Differences from QB
See also