gpt4 book ai didi

c++ - 指针在赋值前会占用内存吗?

转载 作者:行者123 更新时间:2023-11-30 04:13:13 28 4
gpt4 key购买 nike

假设我有这个:

int *thing;

是否使用了 4 个字节的内存,即使我没有分配任何内存?当我分配一些东西 (thing=new int;) 时,它是否会使用 8 个字节,因为指针本身可能会占用内存?

另外,假设我有这个:

struct thingy
{
int *intThing;
}

thingy *result=new thingy;
thingy.intThing=new int;
delete thingy;

intThing 是否也会被删除,或者内存会一直漂浮而没有任何指向它?

最佳答案

所有变量(原始数字类型、类实例、指针、引用)开始占用空间。

然后优化器介入,可能会显示一些存储是冗余的(值是常量,或者总是可以从另一个变量获得,等等)

让变量消失是优化器的明确目标之一,因为它倾向于减少寄存器压力,提高缓存性能等。

在您的示例中,指针 intThing 将被销毁(它是一个成员,并且成员在其父对象销毁时死亡),但它指向的内存(正确地称为 * thingy.intThing 而不仅仅是 thingy.intThing) 不会。如果它的地址没有存储在其他地方,那么它就会被泄露。

关于c++ - 指针在赋值前会占用内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com