【发布时间】:2013-10-20 05:36:54
【问题描述】:
说我有这个:
int *thing;
即使我没有分配任何内容,这是否使用 4 字节的内存?当我分配一些东西(thing=new int;)时,它会使用 8 个字节,因为指针本身可能会使用内存吗?
另外,假设我有这个:
struct thingy
{
int *intThing;
}
thingy *result=new thingy;
thingy.intThing=new int;
delete thingy;
intThing 是否也会被删除,或者内存是否会四处飘荡而没有任何指向?
【问题讨论】:
-
显然占用空间;当您声明一个变量时,会为其分配存储空间(除非编译器将其优化掉,但我们先不谈这个)。而且“删除”并不意味着“从内存中物理删除”。它只是意味着“告诉操作系统我不再打算使用这个内存区域”。
-
指针是一个“保存”地址的变量,但这并没有改变一个简单的事实,它仍然是一个变量,因此是可寻址的,因此它本身占用空间。那个空间“在哪里”是另一回事,但它总是必须坐在“某个地方”。
标签: c++ pointers memory new-operator delete-operator