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; //两者都不能被修改
}
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; //两者都不能被修改
}
相关文章推荐
- c语言多级指针用malloc申请内存,释放报错,为什么会这样捏???????
- 释放内存为什么要用二级指针
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- 【C语言提高23】二级指针做输出的内存模型
- C语言 二级指针内存模型混合实战
- c语言中的内存管理(重点:动态内存申请释放,野指针,指针函数)
- C语言 二级指针内存模型③
- C语言:结构体中一级指针和二级指针的创建与释放示例
- 结构体包含二级指针和二级指针内存的申请与释放问题
- C语言中,二级指针的三种内存模型
- C语言 二级指针内存模型①
- 【C语言提高25】二级指针做输入的第二种内存模型:二维数组
- C语言进阶之二级指针的应用:重置内存空间大小
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- c语言中的内存管理(重点:动态内存申请释放,野指针,指针函数)
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- C语言内存分配、指针强制转型和异地释放内存
- C语言 二级指针内存模型混合实战
- C语言中的二级指针的三种内存模型
- C语言指针,申请、释放内存,线程