函数返回时是将返回值拷贝到某个寄存器中,实际上返回的是拷贝的值而不是原来的值。不知道我这样理解正确吗?
那么如下的函数有什么问题呢?
int fun()
{
int *p=new int(5);
return *p;
}
int main()
{
int a=fun();
return 0;
}
我的理解是将*p的值(也就是5)拷贝到寄存器中,然后将5返回;可是在程序运行时有错,除了内存泄露外还有哪些错误呢?感觉我对程序返回的原理不甚明了。望大家指教!!
...全文
3078打赏收藏
函数返回值基础问题请教
函数返回时是将返回值拷贝到某个寄存器中,实际上返回的是拷贝的值而不是原来的值。不知道我这样理解正确吗? 那么如下的函数有什么问题呢? int fun() { int *p=new int(5); return *p; } int main() { int a=fun(); return 0; } 我的理解是将*p的值(也就是5)拷贝到寄存器中,然后将5返回;可是在程序运行时有错,除了内存泄露外还有哪些错误呢?感觉我对程序返回的原理不甚明了。望大家指教!!