小弟在编程中需要如下定义:
  char pBuf[iLength];
  但是,iLength在每个进程中都不是相同的,分配多了,浪费,分配少了,不够用!
  如果定义成:
  char *pBuf;
  在编译中报错:没有对pBuf初始化!
  请教,如何能动态分配buffer空间,使其能够自动调节buffer大小??????

解决方案 »

  1.   

    定义+初始化:char *pBuf = NULL;需要使用iLength空间时,使用new申请内存空间
    pBuf = new char[iLength];使用结束后,记得通过delete释放内存空间:
    delete []pBuf;
    pBuf = NULL;
      

  2.   

    这个问题也许太简单了,我帮你一下吧char *pBuf = NULL; // 最好是全局的,易于delete!
    //在你使用pBuf之前
    if(!pBuf)
    {
       pBuf = new char[iLength];
    }//使用完之后
    delete [] pBuf; //这个十分重要,千万别忘了,会造成内存泄漏的!
      

  3.   

    //使用完之后
    delete [] pBuf; //这个十分重要,千万别忘了,会造成内存泄漏的!
    pBuf = NULL; //这个忘了,sorry
      

  4.   

    这种方法我也会,问题是,一旦程序写完了,就不能再做更改了,如果这次我定义了iLength=2048,但是下一次需要4096怎么办?难道要再改程序??
      

  5.   

    iLength 是变量啊!你应该能让程序自动判断应该申请多少内存。
      

  6.   

    你可以在前面定义#define iLength  2048
    要时把2048改为4096即可
      

  7.   

    呵呵,比如这样:
    BYTE* buf[10];
    int i;
    for(i=0;i<10;i++)

        buf[i]=new BYTE[i];
    }....
    for(i=0;i<10;i++)
    {   delete[] buf[i];
    }
    明白了嘛?
    new BYTE[i]中i可以是变量!