linux c 指针引起的段错误
学习笔记
#include<stdio.h>
#include<stdlib.h>
void f1(int* p);
int main(void)
{
int *p;
f1(p);
*p=4;
printf("%d\n",*p);
free(p);
return 0;
}
void f1(int* p)
{
p=(int*)malloc(sizeof(int));
}
改为如下解决,主要是因为函数f1中对p的修改在函数返回时就消失了
#include<stdio.h>
#include<stdlib.h>
void f1(int** p);
int main(void)
{
int *p;
f1(&p);
*p=4;
printf("%d\n",*p);
free(p);
return 0;
}
void f1(int** p)
{
*p=(int*)malloc(sizeof(int));
}