char *buf = new char[(rand() & 0xff) + 8];
で確保したエリアのサイズを、後から調べる方法ってありませんかね?