Return C中静态常量变量的地址
Return the address of a static const variable in C
像下面这样在 C 中 return 静态常量变量的地址安全吗?
uint8_t *return_static_const_addr(void)
{
static const uint8_t values[2] = {0x01, 0x02};
return values;
}
它在运行时会有一个常量地址,所以,是的,它是安全的。
这里的static const 变量是局部变量,不会存储在栈中,因此通常不是线程安全的。它还取决于编译器。如果您正在编写此代码,则返回静态 const 变量将是安全的,例如,对于 C++11,其中这种局部静态的动态初始化是线程安全的。
像下面这样在 C 中 return 静态常量变量的地址安全吗?
uint8_t *return_static_const_addr(void)
{
static const uint8_t values[2] = {0x01, 0x02};
return values;
}
它在运行时会有一个常量地址,所以,是的,它是安全的。
这里的static const 变量是局部变量,不会存储在栈中,因此通常不是线程安全的。它还取决于编译器。如果您正在编写此代码,则返回静态 const 变量将是安全的,例如,对于 C++11,其中这种局部静态的动态初始化是线程安全的。