【发布时间】:2019-07-24 07:54:06
【问题描述】:
我想知道为什么即使我们将指针分配给NULL,指针指向的对象的大小也不为零。谁能解释一下?
在 g++ 4.8、ubuntu 14.04 上编译
Foo * foo=NULL;
cout<<"Size of pointed object of foo:"<<sizeof(*foo)<<endl; //why it is not zero
【问题讨论】:
-
因为你问的是
Foo类型的大小,而不是foo的内容。 -
sizeof(*foo)在编译时进行评估。它只是变成Foo对象的大小,而不管foo指针的值在cout...行运行时是什么值。它不会在运行时进行空指针检查以查看它是否指向任何地方。 -
但是 foo 仍然没有指向任何 Foo 对象。为什么它显示 (Foo) 的大小
-
@RamCharan 如何在编译时知道
foo在运行时可能指向的位置?