Кажется, я не могу выровнять структуры C ++ / CLI менее чем с 8 байтами. У меня есть структура из двух Int32, я выделил миллион из них и вуаля: 16 МБ памяти согласно «.NET Memory Profiler» (плюс список данных). Я установил опцию компилятора на / Zp4 (также пробовал / Zp1), на Минимизировать размер (/ O1) и Малый код (/ Os), просто чтобы убедиться, что я дополнительно добавил "#pragma pack (1)" в свой код , но безрезультатно. Моя структура все еще занимает 16 байтов. Я изменил его на класс, все тот же.
Почему это?
Как поменять?
Ciao,
Эйке
using namespace System;
#pragma pack(1)
ref struct myStruct
{
Int32 a;
Int32 b;
};
int main(array<System::String ^> ^args)
{
System::Collections::Generic::List<myStruct^> list;
for (int i = 0; i < 1000000; i++)
{
list.Add(gcnew myStruct());
}
// avoid optimization
Console::WriteLine(list[333333]->a);
return 0;
}