说我有这样的:指针在分配之前是否占用内存?
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