无法把指针变量本身传递给一个函数的解决方法

//1:传递指针的方法无效,结果导致内存泄露
void GetMemory(char *p,int num)
{
    p=(char*)malloc(num*sizeof(char));
}
int main()
{
    char *str=NULL;
    GetMemory(str,10);
    strcpy(str,"hello");
    free(str);//free 并没有起作用,内存泄露
    return 0;
}
//2:return 返回分配内存地址
char* GetMemory(char *p,int num)
{
    p=(char*)malloc(num*sizeof(char)
    return p;
}
int main()
{
    char* str=NULL;
    str=GetMemory(str,10);
    strcpy(str,"hello");
    free(str);
    return 0;
}
//3:二级指针的使用,将指针地址传递给函数,改变指针内容(即分配内存首地址)
void GetMemory(char **p,int num)
{
    *p=(char*)malloc(num*sizeof(char));
    return p;
}
int main()
{
    char *str=NULL;
    GetMemory(&str,10);
    strcppy(str,"hello");
    free(str);
    return 0;
}

 

posted @ 2013-07-05 19:37  soderman  阅读(529)  评论(0编辑  收藏  举报