gpt4 book ai didi

arrays - 函数并返回 const char*

转载 作者:行者123 更新时间:2023-12-01 10:05:57 27 4
gpt4 key购买 nike

const char* test(bool i)
{
const char t[] = "aa\n";
const char* p = "bbb\n";
if(i)
return p;
return t;
}
int main(array<System::String ^> ^args)
{
printf(test(true));
printf(test(false));
return 0;
}

返回某种东西:

 bbb
%^&$^$%

很明显,test(false) 返回一个指向局部变量的指针。问题是 p 也是局部变量。为什么函数返回后没有清理“bbb\n”的内存。我认为 const char[] 的解释方式与 const char* 相同,但事实并非如此。

最佳答案

虽然 p 是一个局部变量,但它指向的不是局部变量——它是一个编译时字符串常量;从函数返回该常量的地址是合法的。

t 不同,因为编译时字符串常量被复制到一个自动存储区,在取消引用返回的指针时导致未定义的行为。

关于arrays - 函数并返回 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10668923/

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