我非常了解何时将限制用于函数参数。但是到目前为止我发现的所有文章都没有提到其他声明(如函数返回值和局部变量)。
这是一个例子:
extern int *alloc_foo(void);
extern int *alloc_bar(void);
int *foo = alloc_foo();
foo[i] = 42;
int *bar = alloc_bar();
f(foo[i]);
如果 alloc_foo() 和 alloc_bar() 保证返回非别名地址(比如如果有 malloc 的包装器),我应该让它们返回限制吗?我应该限制 foo 和 bar 吗?