たとえば、このコード:
#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) のコピーが実際には関数内で作成され、関数が終了するとすぐに削除されますよね? 変数値のアドレスの 2 回目の呼び出しではfoo
、そのアドレスでポインター x が作成され、関数が終了するとすぐに削除されますよね? これらの呼び出しのうち、スタック メモリの消費量が少ないのはどれですか? それともどちらも同じことですか?