日期:2014-05-18  浏览次数:21188 次

.net 内存管理问题
C# code

int width =800;
int height = 600;
CustomClass c = new CustomClass(width ,height );



C# code

CustomClass c = new CustomClass(800,600);


想大虾分析下以上两种情况,.net 的内存分配是否一样。下面的例子中,参数800和600是否有创建对象,并占用内存。

------解决方案--------------------
C# code

            int x = 800;
00000033  mov         edi,320h 
            int y = 600;
00000038  mov         ebx,258h 

            Customclass c1 = new Customclass(x, y);
0000003d  mov         ecx,9E9D90h 
00000042  call        FD160AA4 
00000047  mov         esi,eax 
00000049  push        ebx  
0000004a  mov         edx,edi 
0000004c  mov         ecx,esi 
0000004e  call        FD17B108 
00000053  mov         dword ptr [ebp-48h],esi 

            Customclass c2 = new Customclass(800, 600);
00000056  mov         ecx,9E9D90h 
0000005b  call        FD160AA4 
00000060  mov         esi,eax 
00000062  push        258h 
00000067  mov         ecx,esi 
00000069  mov         edx,320h 
0000006e  call        FD17B108 
00000073  mov         dword ptr [ebp-4Ch],esi

------解决方案--------------------
.net所有类型的数据都是对象,连数据的类型本身都是对象。下面的也创建对象。