>>237
>chkptr = buf + sizeof(char)*(size - 3);

この sizeof はいりません。
charだから動いているけど、それ以外の型だと、このコードは
正常にうごきませんね。