【发布时间】:2011-10-06 15:54:32
【问题描述】:
int& fun()
{
int * temp = NULL;
return *temp;
}
在上述方法中,我正在尝试解除对 NULL 指针的引用。当我调用此函数时,它不会给出异常。我发现当返回类型是按引用时,如果它是按值,那么它不会给出异常。即使将 NULL 指针的取消引用分配给引用(如下行),它也不会给出。
int* temp = NULL:
int& temp1 = *temp;
这里我的问题是编译器在引用的情况下不做取消引用吗?
【问题讨论】:
-
引用在内部作为指针处理,它们只是在您对它们使用的语法上有所不同。知道您的取消引用仅将指针值“分配”给引用,使其成为对 NULL 的引用。这不会触发任何内存访问。当您按值返回时,取消引用将导致内存访问为 0,这几乎总是会给您一个段错误。
标签: c++ pointers reference undefined-behavior null-pointer