也许这是一个新手问题,但在C/C++中是否有一种方法可以防止函数接受指向局部变量的指针?
考虑以下代码:
编译器会生成一个警告,指针不能被返回。现在考虑这个例子:
这段代码会通过编译器而没有任何警告,这很不好。有没有什么属性或者类似的东西可以防止这种情况发生?比如说:
```csharp [DisallowUninitialized] int myInt; ```
考虑以下代码:
int* fun(void)
{
int a;
return &a;
}
编译器会生成一个警告,指针不能被返回。现在考虑这个例子:
int* g;
void save(int* a)
{
g = a;
}
void bad(void)
{
int a;
save(&a);
}
这段代码会通过编译器而没有任何警告,这很不好。有没有什么属性或者类似的东西可以防止这种情况发生?比如说:
```csharp [DisallowUninitialized] int myInt; ```
void save(int __this_pointer_must_not_be_local__ * a)
{
g = a;
}
如果有人知道答案,提前感谢。
void f() { int b; save(&b); /* do stuff */ save(NULL); }
怎么办?并不一定是变量“本地”很重要;这也是不好的。int* p = new int(); save(p); delete p;
- CB Bailey