gpt4 book ai didi

c - 将值返回到在函数中初始化的指针

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:33 25 4
gpt4 key购买 nike

很多很多年后开始重新学习 C,我有点困惑为什么我正在做的事情是有效的:

char *test_foo() {
char *foo = "foo";
return foo;
}

int main(int argc, char *argv[])
{
char *foo = test_foo();
printf(foo);
return 0;
}

也许我误解了我的书,但我的印象是 test_foo 函数中初始化的字符指针应该在函数返回后释放其内存块,这应该使我的 printf 不像本例中那样打印出“foo”。

这只是内核没有及时释放内存的情况,还是我误解了为什么会这样?

最佳答案

在 C 语言中,字符串字面量是具有静态存储持续时间的常量字符的匿名数组。当周围的函数返回时,字符串文字的内存不会被释放。指针 foo 的内存是,但它的值在释放之前被复制到调用者。您正在做的事情定义明确且理智。

关于c - 将值返回到在函数中初始化的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34005668/

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