【发布时间】:2009-03-25 21:30:02
【问题描述】:
在运行时如何区分指针和引用?例如,如果我想在不知道它是否是指针的情况下释放数据类型的指针,我该怎么做?有什么方法可以判断变量是在栈上还是通过malloc()分配的?
void destInt(int* var)
{
free(var);
}
int num = 3;
int &numRef = num;
int* numPtr = (int*)malloc(sizeof(int));
*numPtr = num;
destInt(&numRef); //Syntactically correct but generates invalid pointer()
destInt(numPtr); //Fine syntactically and logically
【问题讨论】:
-
这不是 C。或者,它看起来不像 C。
-
还有你的“destInt(numRef);”在语法上根本不正确。不能将引用传递给接受 int * 的函数。
-
可以但是引用变量的地址可以,就是这里的效果。 numRef 和 num 都指向内存中的相同位置。
标签: c++ pointers reference stack malloc