>593
> new char(n)なら、必ずdelete p;
> new char[n]なら、必ずdelete[] p;

new char[n]はdelete pでも問題ないはず。
new int[n]はdelete [] pが普通だけど、これもdelete pで大丈夫だと思ったが。

>583
> あと、if(buf) free(buf); は、単に free(buf); でいいよ。

フントか?