#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的值(在此程序中),那么为什么我们无法访问它的地址?我收到错误(分段错误)。
它背后的概念是什么?
我是初学者。
答案 0 :(得分:2)
您不应该返回指向自动局部变量的指针。一旦函数返回它将不再存在,因此将调用未定义的行为。
您可以动态分配内存,然后返回指针:
int * display()
{
printf("\n Hi \n");
int *b = malloc(sizeof(int));
*b = 10;
return b;
}