2017-09-04 24 views
0

是否有類myObjectAmyObjectB在內存使用/分配的差異?當在一個類中聲明一個新的數組時,內存分配是否有區別?

例如,如果我不想的速度添加到類意志的每個對象是使用具有新的浮動多個存儲器。[2]在類?

而且什麼「意達」如果我創建一個新的「myObjectA」對象,但我不會在其零添加一個新的意達又名,它仍然使用內存的內存使用情況?

如果我創建一個新的「ItemA」(myItem),然後創建一個新的「myObjectA」(myObject),它會使用多少內存,myObject.item = myItem;我認爲它是一個指向(myItem)該指針會使用多少內存?和將它留在null是否有區別?

例C#

public class itemA 
    { 
     Color color = Color.FromArgb(255,0,0); //3byte 
    } 
    itemA myItem = new itemA(); 

    public class myObjectA 
    { 
     float[] pos; // ?byte 
     float[] velocity; // ?byte 
     itemA item; // ?byte 
    } 
    myObjectA myObject0 = new myObjectA(); 

    public class myObjectB 
    { 
     float[] pos = new float[2]; // 8byte 
     float[] velocity = new float[2];// 8byte 
     itemA item; //?byte 
    } 
    myObjectB myObject1 = new myObjectB(); 

回答

1

有一個在創建時間在這兩個類之間的內存使用情況的差異。正如你指出的那樣,myObjectA將有未賦值的變量,而myObjectB將賦予這些變量數組。

只要您將對象指定給myObjectA中的變量,指針將被設置爲這些對象,並且內存使用將由這些數組的大小決定。假設你打算創造完全相同他們作爲myObjectB - 浮法[2],然後myObjectAmyObjectB將使用相同的內存量。

至於未分配變量的大小,而指針不會指向一個對象在內存中,指針本身將仍然存在,並會爲您的操作系統默認的指針大小。

爲指針大小見How big is an object reference in .NET?

對於最終的問題,這取決於。通過使這個類具有通用性,你試圖完成什麼?我會建議爲此提出一個單獨的問題。

相關問題