📜  C |动态内存分配|问题3

📅  最后修改于: 2021-05-29 12:23:07             🧑  作者: Mango

输出?

# include
# include
   
void fun(int *a)
{
    a = (int*)malloc(sizeof(int));
}
   
int main()
{
    int *p;
    fun(p);
    *p = 6;
    printf("%d\n",*p);
    return(0);
}

(A)可能不起作用
(B)作品和版画6答案: (A)
说明:该程序无效。尝试替换“ int * p;”与“ int * p = NULL;”它将尝试取消引用空指针。
这是因为fun()会复制指针,因此,在调用malloc()时,会将复制的指针设置为内存位置,而不是p。 p指向对fun()调用之前和之后的随机内存,当您取消引用它时,它将崩溃。
如果要从函数向指针添加内存,则需要传递指针的地址(即,双指针)。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。