Следующий код генерирует исключение ExecutionEngineException при запуске исполняемого файла сборки release (start exe file ).Это ошибка или это нормальное поведение?
тип значения с размером пакета = 1:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct RunLong
{
public byte Count;
public long Value;
public RunLong(byte count, long value)
{
Count = count;
Value = value;
}
}
Использование структуры в общем списке (T), добавление значений и получение или установкаего свойство value делает сбой исполняемого файла, если он был построен в режиме выпуска.Сбой не происходит, когда исполняемый файл создается в режиме отладки или при запуске кода в отладчике Visual Studio (режим выпуска или отладки).
List<RunLong> runs = new List<RunLong>(1024);
for (int i = 0; i < 1000; i++)
{
runs.Add(new RunLong(1, i));
}
RunLong last = runs[runs.Count - 1];
last.Count = (byte)(last.Count + 1);
runs[runs.Count - 1] = last;
Может кто-нибудь подтвердить это?Есть ли разумное объяснение?
Я использую VS 2010, .net 4, Win XP SP3
Заранее спасибо!