VC++6でDLL作るときについての質問です。

メインのEXEファイルからDLLの関数を呼び出して文字列を格納するとき、
EXEファイル内のポインタ(char* p)を渡して文字列を返してもらうとします。

DLLの関数内で
void hoge(char* p)
{
  p = (char*)malloc(sizeof(char) * 100);
  strcpy(p, "testtest");
}

というやり方は正しいですか?
危ないことをやってそうな気がして怖いんですが…。