我正在尝试使用 frama-c 验证以下代码
/*@ ensures \result != \null;
@ assigns \nothing;
@*/
extern int *new_value();
//@ assigns *p;
void f(int* p){
*p = 8;
}
//@ assigns \nothing;
int main(void){
int *p = new_value();
f(p);
}
证明者无法证明main没有赋值,这是有道理的,因为main通过函数f赋值给 *p 。但是,我应该如何在 \assigns 子句中说明这一点,因为p是局部变量并且不能在注释中访问。