例如这段代码:
#include <iostream>
using namespace std;
void foo(int* x){ cout << "X = " << *x << endl;}
int main()
{
int value = 5;
int *p = &value;
foo(p);
foo(&value);
return 0;
}
在函数的第一次调用中,foo
实际上在函数内创建了指针 p (x) 的副本,并在函数结束后立即删除,对吗?在第二次调用foo
变量值的地址时,使用该地址创建一个指针 x,并在函数结束时立即删除,对吗?就堆栈内存消耗而言,这些调用中哪个更便宜?还是两者都是一样的?