none
如何用指针带回动态空间 RRS feed

  • 问题

  • 在函数getBuff(char* buf,size_t size)中,我希望能动态的获取内存空间;

    void  getBuff(char* buf,size_t size)

    {

      buf=new char[size];

    memset(buf,'a',sizeof(char)*size);

    buf[size-1]='\0';

    }

    在主函数中,调用方式如下:

    {

    char *p=0;

    get(p);

    printf("string=%s\n",p);

    }

    debug(vs2005)时,输出结果s=NULL;

     请问如何通过指针参数带回数据?

    谢谢!

    2010年8月6日 3:32

答案

  • buf是值传递方式进行传值的,传进来的只是buf的副本,在函数作用域之外是无效的。所以应该传入的指针的指针,或者指针的引用“江写生”那样写可以,以下实现也可以:

    #include <iostream>
    using namespace std;
    void getBuff(char* &p,size_t size)
    {
      p = new char[size];
      for(size_t i=0;i < size; i ++)
      {
        p[i] = 'a';
      }
      p[size-1]='\0';
    }
    int main()
    {
      char* p;
      getBuff(p,(size_t)10);
      cout << p << endl;
      
      delete[] p;
      return 0;
    }
    
    2010年8月6日 5:19