ECMA-335 указывает следующее для модели памяти:
I.12.6.8
Другие проблемы с моделью памяти
Вся память выделена для статическойпеременные (кроме назначенных RVA в PE-файле, см. Раздел II) и объекты должны быть обнулены, прежде чем они станут видимыми для любого пользовательского кода.
Эта строка сформулирована несколько двусмысленно. Если все объекты должны быть обнулены, включает ли это какие-либо платформенные байты заполнения, добавленные к объекту?
например
struct Foo
{
public byte mA;
// 3 bytes padding here
public int mB;
}
void Bar()
{
// initobj is emitted here, will this zero the padding bytes?
var foo = new Foo();
// initobj is omitted here, the object will not be given its default value.
// Is the object then guaranteed to at least be zeroed?
// Will the padding be zero as well?
Foo otherFoo;
}