使用 malloc 的动态内存分配

Dynamic Memory Allocation using malloc

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

为什么上面的代码无效?为什么会出现分段错误?

因为a本身是按值传递的,所以函数中对自身的任何修改都与参数无关。

您可以将其更改为按引用传递

void fun(int *&a) 
{ 
    a = (int*)malloc(sizeof(int)); 
} 

顺便说一句:在 C++ 中最好使用 new(和 delete),或者从一开始就不要使用原始指针。