SizeOf
Returns the size of a variable or type in bytes.
Syntax
`
SizeOf ( variable | DataType )
`
Description
The `SizeOf` operator returns an `Integer` value: the number of bytes taken up by a `variable` or `DataType`.
Different from `Len`, when used with fixed-length strings (including fixed-length `ZString`s and `WString`s) 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.
When a variable from a given namespace is accessed with the namespace's name prefix, wrap the argument to `SizeOf` with parentheses to force it to be seen as an expression. For example `Sizeof((namespace_name.variable))`.
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)
`
Dialect Differences

- Not available in the -lang qb dialect unless referenced with the alias `__Sizeof`.

Differences from QB

- New to FreeBASIC

See also

- `Len`