gpt4 book ai didi

c - C中的内存分配是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 20:11:01 25 4
gpt4 key购买 nike

#include<stdio.h>

int * display();

main()
{
printf("\nHello\n");

int * a = display();
printf("%d", *a);
}

int * display()
{
printf("\n Hi \n");

int b = 10;
return &b;
}

谁能告诉我c中的内存分配是如何工作的?

我确定我们可以访问b的值(在这个程序中),那么为什么我们不能访问它的地址呢?我收到错误(段错误)。

其背后的概念是什么?

我是初学者。

最佳答案

您不应该返回指向自动局部变量的指针。一旦函数返回,它将不再存在,因此将调用未定义的行为。

您可以动态分配内存,然后返回指针:

  int * display()
{
printf("\n Hi \n");

int *b = malloc(sizeof(int));
*b = 10;
return b;
}

关于c - C中的内存分配是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300237/

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