在 c中,
是不是不能在函数里分配内存?例子(出错了),是函数内可以打印,main函数不能打印,是不是在 在函数里分配内存无效??void charTemp(char *ptr)
{
ptr=(char *)malloc(20);
strcpy(ptr,"123");
printf("test:%s\n",ptr);
return ;
}int main
{
char * ptr;
charTemp(ptr);
printf("test:%s\n",ptr);
}

解决方案 »

  1.   

    用双指针,可以改为
    void charTemp(char * *ptr)
    {
    *ptr=(char *)malloc(20);
    strcpy(*ptr,"123");
    printf("test:%s\n",*ptr);
    return ;
    }
    int main(int argc, char* argv[])
    {
    char * ptr=NULL;
    charTemp(&ptr); printf("test:%s\n",ptr);
    return 0;
    }
      

  2.   

    use pointer of pointerchar **ptr
      

  3.   

    #include <stdio.h>
    #include <malloc.h>
    #include<string.h>void charTemp(char *ptr)
    {
    ptr=(char *)malloc(20);
    strcpy(ptr,"123");
    printf("test:%s\n",ptr);
    return ;
    }int main()       //()
    {
    char * ptr = NULL;
    charTemp(ptr);
    printf("test:%s\n",ptr);

    return 0;
    }
    尽量在局部域定义对象是被提倡的,
      

  4.   

    #include <stdio.h>
    #include <malloc.h>
    #include<string.h>void charTemp(char *ptr)
    {
    ptr=(char *)malloc(20);
    strcpy(ptr,"123");
    printf("test:%s\n",ptr);
    return ;
    }int main()  ///
    {
    char * ptr = NULL;          ///
    charTemp(ptr);
    printf("test:%s\n",ptr);
    delete ptr;                 ///

    return 0;
    }
      

  5.   

    我按照你所讲的方式在.NET 7.0中实现,没有说出现内存泄漏啊?
    有内存泄漏的话,我想.NET7.0也会出现警告啊!