初心者の質問かもしれませんが、関数がローカル変数へのポインターを受け入れないようにする方法は C/C++ にありますか?
次のコードを検討してください。
int* fun(void)
{
int a;
return &a;
}
コンパイラは、ポインターを返すことができないという警告を生成します。これを考慮してください:
int* g;
void save(int* a)
{
g = a;
}
void bad(void)
{
int a;
save(&a);
}
これは警告なしでコンパイラを通過しますが、これは悪いことです。これが起こらないようにするための属性または何かがありますか? つまり、次のようなものです。
void save(int __this_pointer_must_not_be_local__ * a)
{
g = a;
}
誰かが答えを知っている場合は、事前に感謝します。