【发布时间】:2012-08-21 18:21:58
【问题描述】:
可能重复:
Is returning a string literal address from a function safe and portable?
“life-time” of string literal in C
你好,我有点困惑
char *func()
{
return "Hello";
}
这里的“Hello”是字符序列/数组。它是一个局部变量,一旦函数返回,它就必须消失。那我们怎么能得到正确的值呢?
【问题讨论】:
-
那不是UB吗?你有没有收到编译器的警告?
-
不,在这种情况下不是,因为字符串存储在一个常量内存地址中。
-
但是他返回的是
char*而不是const char*不是UB吗? -
@NeelBasu 是否没有在堆栈上分配字符串文字?
-
@Constantinius 是否没有在堆栈上分配字符串文字?
标签: c scope heap-memory local