我希望您能告诉我这段代码为什么无法运行(从内存角度讲),以下是代码内容:
为什么这不能工作?我认为堆(更重要的是地址)对栈中所有函数变量都是共用的。
此外,如果我在函数fun内注释掉内存分配并取消在main函数中的注释,则会发生什么问题。它可以正常工作。
#include <stdio.h>
#include <stdlib.h>
int* fun(int*);
int main()
{
int a=5;
int* ptr;
// ptr=(int*)malloc(sizeof(int));
fun(ptr);
a=*ptr;
printf("\n the val of a is:%d",a);
return 0;
}
void fun(int* ptr)
{
ptr = (int*)malloc(sizeof(int));
*ptr = 115;
}
为什么这不能工作?我认为堆(更重要的是地址)对栈中所有函数变量都是共用的。
此外,如果我在函数fun内注释掉内存分配并取消在main函数中的注释,则会发生什么问题。它可以正常工作。