char *hoge;

と宣言したのを

realloc(hoge,strlen(hoge) + i + 1);
/* iはunsigned intの適当な値 */

って使い方はよくないですか?えっと、つまりhogeのメモリ領域を
再確保する際に、strlen(hoge)って使うのがよくないのかな
と思いまして。それとも

n = strlen(hoge) + i;
realloc(hoge, i + 1);

とかのが良いですか?