gpt4 book ai didi

c++ - 从函数返回时写入内存

转载 作者:搜寻专家 更新时间:2023-10-31 00:36:51 25 4
gpt4 key购买 nike

<分区>

我想知道下面这段代码,它非常简单但是:

char* foo()
{
int i;
char buff[100];
snprintf(buff,100,"This is now written in the stack allocated memory!");

return buff;
}

现在,buff 被分配到函数的堆栈中,这意味着每个变量都被释放,我们有一个内存泄漏。但是在已经写入的位置到底发生了什么?

台词还写在内存里,不是吗?

  • 我可以读取那段内存吗?我确实有指向段开头的指针,如果是这样的话,它会是这样的:

    char* bar = foo();
    char foobar = bar[0];
  • 我可以写到那个特定的位置吗?类似的例子:

    char* bar = foo();
    bar[1] = 'i';
  • 一般来说,为什么它被认为是内存泄漏?我们不能重新分配这个位置吗?

将感谢有关此问题的澄清!

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