小编haa*_*ael的帖子

防止本地指针

也许这是一个新手问题,但在C/C++中是否有一种方法可以阻止函数接受指向局部变量的指针?

考虑以下代码:

int* fun(void)
{
 int a;
 return &a;
}
Run Code Online (Sandbox Code Playgroud)

编译器将生成一个警告,指示无法返回指针.现在考虑一下:

int* g;

void save(int* a)
{
 g = a;
}

void bad(void)
{
 int a;
 save(&a);
}
Run Code Online (Sandbox Code Playgroud)

这将通过编译器而不会发出警告,这很糟糕.是否有某种属性或某些东西可以防止这种情况发生?就像这样:

void save(int __this_pointer_must_not_be_local__ * a)
{
 g = a;
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道答案,请提前致谢

c pointers compiler-warnings

5
推荐指数
1
解决办法
137
查看次数

标签 统计

c ×1

compiler-warnings ×1

pointers ×1