くだらない事ですが、、文字配列の添え字アクセスについてです

main()
{
  FILE *fp = NULL;
  char *buf = NULL;  /* 行バッファです */
  size_t size = 10240;/* バッファのサイズです */

  /* ファイルをオープンします */
  buf=(char *)malloc(size);
  memset(buf,'\0',size);/* 塗りつぶしておきます */
  while(fgets(buf,size,fp)){
    if(buf[size-3] != '\0')/* ←←ここです! *//* 行の最後まで読めなかった */
      /* 領域を拡張して読み直します */
    else
      printf("%s",buf);
  } 
}
この[size-3]の添え字計算はマズイと言うか最適化されませんか?
char *chkptr = size - 3;として
buf[size-3] の変わりに *chkptr とした方が良いでしょうか
reallocしてアドレスが変わる可能性が有るから、最適化出来ないのかなぁ・・・
とか勝手に思ってるんですが、
と言うかこのやり方馬鹿ですか? (汗