相关疑难解决方法(0)

函数返回的字符串文字的生命周期

考虑以下代码:

const char* someFun() {
    // ... some stuff
    return "Some text!!"
}

int main()
{
   { // Block: A
      const char* retStr = someFun();
      // use retStr
   }
}
Run Code Online (Sandbox Code Playgroud)

在函数中someFun(),"Some text!!"存储的位置(我认为它可能在ROM的某个静态区域)以及它是什么范围 一生?

指向的内存是否会在retStr整个程序中被占用,或者在块A退出后被释放?

c c++ lifetime string-literals

25
推荐指数
3
解决办法
5435
查看次数

C变量的范围

可能重复:
从函数安全且可移植返回字符串文字地址?
C语言中字符串文字的"生命周期"

您好我有点困惑

char *func()
 {

    return "Hello";
 }
Run Code Online (Sandbox Code Playgroud)

这里"Hello"是字符序列/数组.它是一个局部变量,一旦函数返回它就必须消失.那我们怎么能得到正确的价值呢?

c heap scope local

5
推荐指数
1
解决办法
247
查看次数

标签 统计

c ×2

c++ ×1

heap ×1

lifetime ×1

local ×1

scope ×1

string-literals ×1