ECMA-335 I.12.6.8 Пояснения к памяти - нулевой объект и байты заполнения гарантированы? - PullRequest
0 голосов
/ 08 октября 2019

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...