mainから呼ばれた関数の中でnewし、
main関数内でdeleteすることは推奨されるのでしょうか。
例えばこんな感じです。
ポインタを参照渡しするのもなんか気持ち悪いので
もっと良い書き方があれば併せて教えて頂けるとうれしいです。

int ReadVariableData(char* &a)
{
 int size = GetSize();
 a = new char[size];
ReadData(a,size);
 return size;
}

void main(void)
{
 char* a;
 int size = ReadVariableData(a);
 //処理
 delete[] a;
}