gpt4 book ai didi

c++ - 返回本地创建的 const char*

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:45 25 4
gpt4 key购买 nike

#include <iostream>


const char* fun()
{
const char* x = "abc";
std::cout << "x = " << x << "\n";
return x;
}


int main(int arc, char** argv)
{
const char* y = fun();
std::cout << "y = " << y << "\n";
return 0;
}

在我的机器上运行它会得到:

x = abc

y = abc

fun()中,x(一个局部变量)被赋予了一个在本地创建的字符串文字的地址,但是当函数返回时,指向的数据yx 指向的相同,即使 x 超出范围。

谁能详细解释一下这里发生了什么?

最佳答案

这是良构的,返回的指针是有效的并且没有悬挂;因为string literal (即 "abc") 具有静态存储持续时间,并且存在于程序的整个生命周期中。

String literals have static storage duration, and thus exist in memory for the life of the program.

正如您所说,当函数返回时,局部变量 x 被销毁,但它指向的字符串文字没有被销毁。

关于c++ - 返回本地创建的 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51073832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com