メモリをダンプしながら検証してたけど、うまくいかないので質問させてください。

文字列の一部を動的に確保したchar *hogeにコピーしようと思ってます。

char*piyo="ABCDEFG";
とやって、"BCDEF"をコピーする場合、

・hoge = (char*) malloc(5)ですか(6)ですか?
・strncpy(hoge, piyo+1, 5)とやったあと、*(hoge+5+1)=0は必要ですか?