使用 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
),或者从一开始就不要使用原始指针。
# 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
),或者从一开始就不要使用原始指针。