說我有這樣的:指針在分配之前是否佔用內存?
int *thing;
在於,使用4個字節的內存,即使我什麼也沒有分配給它?當我分配一些東西(thing=new int;
)時,它會使用8個字節,因爲指針本身可能使用內存?
而且,說我有這樣的:
struct thingy
{
int *intThing;
}
thingy *result=new thingy;
thingy.intThing=new int;
delete thingy;
將intThing
被刪除爲好,或將內存懸空周圍什麼也沒有指向它?
顯然它佔用空間;當你聲明一個變量時,會爲它分配存儲空間(除非編譯器將它優化掉,但我們不要談論它)。而「刪除」並不意味着「從內存中物理刪除」。它只是意味着「告訴操作系統我不打算再使用這個內存區域」。 – 2013-10-20 05:44:07
指針是一個「保存」地址的變量,但這並不改變簡單的事實,它仍然是一個變量,因此它是可尋址的,因此佔用空間本身。那裏的空間「是」是另一回事,但它總是必須坐在「某個地方」。 – WhozCraig