>解放するときにちゃんとchの部分も解放されますか?

されない

>delete (Child*)ptr;
>みたいにしないとダメですか?

それでも解放はできるけど、それじゃ継承の利点であるポリモーフィズムが台無しになるので
デストラクタを仮想関数にするのが常套手段

class Parent{
int i;
public:
virtual ~Parent(){}
};
class Child : public Parent{
char ch;
};