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