请问一个c/c++函数参数设计的有关问题

请教一个c/c++函数参数设计的问题
我需要实现一个函数,这个函数的功能是获取一些二进制数据,放到缓冲区里。但是这些数据有多少,事先无法知道,而且每次调用这个函数,获取的数据大小不一样。
我现在设计的接口是这样的:
void GetData(char * & pchData, int & nSize);
调用的时候打算这样写:
char * pchData = NULL;
int nSize = 0;
GetData(pchData, nSize);
。。。
free(pchData);
因为我事先无法知道需要多大的缓冲区,所以缓冲区是在函数内部申请的,在外部使用完后,由外部释放。

但我总觉得这样写好像有点不伦不类,没见过这种写法。
请教一下各位大侠,还有更好的方法,或者更常规的写法吗?
函数 缓冲区

------解决方案--------------------
感觉这样的函数有返回失败的可能,例如内存分配失败之类的。如果,你想在函数内部处理一些exception,可以先写成:bool GetData(char * & pchData, int & nSize);


------解决方案--------------------
可以这样写
接口:
bool GetData(std::string& strData);

调用:
std::string strData;
if (GetData(strData))
{
  //处理二进制数据strData
}

string可以用来存放二进制数据
从char*赋值:
char* pData;
string strData;
strData.assign(pData, pData+dataLen);
获取数据:
strData.c_str();
strData.size();