您的位置:首页 > 编程语言 > C语言/C++

C语言为什么要用二级指针释放内存

2017-03-31 10:00 459 查看
//为什么需要用二级指针释放内存。

int free_p(int *p){
if(p==NULL){
return 0;
}
free(p);
p==NULL;//由于p是在传递过来的参数,在栈上分配。此操作就如同下面的函数。

return 0;

}

int changeValue(int a)

{
a=100;
return 0;

}

//正确的写法是用二级指针释放内存。

int right_free(int **p)

{
int *ptr=*p;
if(*p==NULL)
{
return 0;
}
free(ptr);
*p=NULL;

}

int main()

{
int* p=(int*)malloc(100);
//free_p(p);
free_p(&p);
}

附带const用法

int main02()

{
char const a=0;
const char a=0;//这两句没有区别,a的值不可修改。
//但是可以通过指针,int *p=&a; *p=5;修改。即C语言中的const是冒牌货。

char* const p=NULL;//指针不能被修改
const char*p=NULL; //指针所指向的内存空间不能被修改
const char* const p;  //两者都不能被修改

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: