Sizeof Operator

Why Trust Techopedia

What Does Sizeof Operator Mean?

Sizeof operator, in C#, is an operator used to determine the size (in bytes) of an unmanaged type that is not a reference type.

Advertisements

While developing applications that involve dynamic memory allocation, it is very common to find the memory allocated to a type. It is very unsafe to assume the size of a type and use the hard-coded value in the application, as this may break the application when ported to different systems. The sizeof operator is used in such cases to find the size of a compound data type like a struct. However, it can only be used to compute the byte size of value types and not for reference types due to the virtualized type layout system of the .NET framework.

The sizeof operator helps in memory allocation for data structures that are passed out of managed application to unmanaged code like Interop, custom serialization, etc. Increment and decrement operators, which operate on pointers, use the sizeof operator internally to increment or decrement the address contained in a pointer variable by a value equal to the number of bytes occupied by the type of pointer. The sizeof operator helps improve code readability.

Techopedia Explains Sizeof Operator

The sizeof operator is a unary operator that takes a singe parameter and is used with the keyword "sizeof". In contrast to C++, the sizeof operator is a compile-time construct, so the parameter has to be a closed type known during compilation, not variables. The parameter can also be an enum, a pointer or a user-defined struct without any field or reference type properties. For certain predefined types, the sizeof operator returns a constant value, while its use with remaining types results in values based on implementation.

For example, when the sizeof operator is executed with integer (int) as a parameter, it always returns the number four to indicate that a variable of integer type occupies four bytes of memory.

When the sizeof operator is applied to a struct type operand, it fetches the total number of bytes occupied by a struct, which includes the padding bytes used for its alignment internally. The guidelines to follow while using the sizeof operator with struct include:

  • It should be called within an unsafe block
  • The struct variable must not contain a member of reference type
  • The struct must not be a generic value type
Advertisements

Related Terms

Margaret Rouse
Technology expert
Margaret Rouse
Technology expert

Margaret is an award-winning writer and educator known for her ability to explain complex technical topics to a non-technical business audience. Over the past twenty years, her IT definitions have been published by Que in an encyclopedia of technology terms and cited in articles in the New York Times, Time Magazine, USA Today, ZDNet, PC Magazine, and Discovery Magazine. She joined Techopedia in 2011. Margaret’s idea of ​​a fun day is to help IT and business professionals to learn to speak each other’s highly specialized languages.