以下代码“正确”吗?或者它会是未定义的行为?
// myfile.c
static char x[10][10];
char* my_function() {
return x[0];
}
Run Code Online (Sandbox Code Playgroud)
my_function正在共享库中使用,所以我认为在文件/编译单元之外访问它的返回值是不安全的(由于static关键字)。
该变量在 myfile.c 之外通过该名称x不可见,但是因为它驻留在文件范围内,即它具有静态存储持续时间,它的生命周期仍然是整个程序的生命周期。
所以在源文件之间返回一个指向静态数据的指针是有效的。
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |