我很难理解这三个之间的区别:
const char * f() {
return "this is a test";
}
const char * g() {
const char * str = "test again";
return str;
}
const double * h() {
const double a = 2.718;
return &a;
}
我收到了h()
, as的警告warning: address of local variable ‘a’ returned
。这是有道理的,但我不明白为什么编译器(gcc -Wall
)可以使用f()
andg()
函数。
- 那里没有局部变量吗?
- 指针何时以及如何被释放
f()
或被g()
释放?