Деструктор для объекта класса A будет вызываться только при вызове delete для этого объекта. Обязательно удалите этот указатель в деструкторе класса B.
Для получения дополнительной информации о том, что происходит при вызове delete на объект, см.: http://www.parashift.com /c++-faq-lite/freestore-mgmt.html#faq-16.9