zoukankan      html  css  js  c++  java
  • 无法把指针变量本身传递给一个函数的解决方法

    //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;
    }
  • 相关阅读:
    4月24日 PHP基础
    4月22日 常用函数
    4月22日 练习题
    PHP正则数组
    PHP基础函数应用
    数据库SQL语句
    高级查询
    mysql
    CSS样式表
    词汇
  • 原文地址:https://www.cnblogs.com/sosoman/p/3174210.html
Copyright © 2011-2022 走看看