【发布时间】:2016-04-03 08:21:46
【问题描述】:
我是 C++ 新手,刚刚阅读了一些关于它的在线教程。我对指针中的实验结果很好奇。这是我的代码:
int *p_value;
sizeof(*p_value) <--- I expected 0 but it shows 4
p_value = new int;
sizeof(*p_value) <--- it shows 8, make sense
delete(p_value)
sizeof(*p_value) <--- I expect 0, but it shows 4 again...
更重要的是,我不明白为什么p_value在删除操作后指向同一个内存地址。有必要是真的吗?
感谢您指出我对运算符“sizeof”的误解。但这是我在问题中没有说得太清楚的事情。
这是另一个代码: int *p_value = 新的 int; cout
我想我可以考虑“删除”只是标记 0x000A 未在 Map 中占用,我猜。但是不会改变p_value的内容?
【问题讨论】:
-
你确定你输入的所有
sizeof()都是一样的吗?要返回 8,第二个应该是sizeof(p_value)。 -
@Bob__ 是对的,在您的机器中,整数似乎是 4 个字节。因此,第二个 sizeof 返回 8 的唯一方法是它是指针的大小,即 8 字节地址
-
@Bob__ 是的,我相信他打错了问题,可能是 sizeof(p_value)。我说你是对的:)
-
@FábioJunqueira 我相信你也是对的 ;) 评论已删除
-
是的...我打错了... sizeof() 将返回 8 而不是 4... Orz
标签: c++