0
看来我不能使C++/CLI结构与少于8个字节对齐。我有一个两个Int32的结构,分配一百万个,根据“.NET Memory Profiler”(加上列表数据)分配16 MB内存。我将编译器选项设置为/ Zp4(也试过/ Zp1),以最小化大小(/ O1)和小代码(/ O),只是为了确保我另外在代码中放了一个“#pragma pack(1)” ,无济于事。我的结构仍然占用16字节。我改成了课堂,依然如此。C++/CLI结构/类对齐
为什么? 如何更改?
的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;
}
我会很高兴有更好的方法来衡量内存使用情况。 C++ sizeof()和Interop :: Marshal :: Sizeof()都不适用于引用。 – Eike 2011-02-17 14:15:12