程序的运行结果是 A) 0 B) 10 C) 20 D)出错

2024-11-22 09:40:19
推荐回答(3个)
回答(1):

答案:虽然可以输出20,但是此段程序存在内存泄露!
#include
#include
int fun(int n)
{
int *p;
p=(int *)malloc(sizeof(int)); //动态申请sizeof(int)个内存空间,
if(NULL != p)
{
*p=n;//空间申请成功,赋值为n
}
else
{
printf("malloc failed!\n");

return 0;

}
return *p;//返回空间中的值,即刚才写入的n
}
//此函每调用一次就申请sizeof(int)个内存空间,没有响应的free释放响应的空间,造成内存泄露,最终可能导致系统崩溃!
main()
{
int a;
a=fun(10);//a = 10;
printf("%d\n",a+fun(10));//输出10+10=20
}

回答(2):

C
fun(n)函数分配了n个整数空间,然后把n赋值给分配空间的第一个数,最后是返回这个数。所以,a=fun(10),a=10,fun(10)=10。
当然,fun()函数分配的空间没有释放,会有内存泄露。

回答(3):

答案是20.......