I assume you already know this, but I have to make sure:
The two lines of code you posted are a memory allocation. The memory will be used until you release it with a call to delete:
delete personel;
This is C++ after all - as I said I assume you already know this.
The second catch is the destructor declaration - if you want to use a base class pointer to reference objects it's important to keep the destructors virtual:
virtual ~CPersonel()
otherwise the call to delete the object made via a base class pointer will not cause the derived class destructor to be called. Sometimes this is hard to spot, but if you make any allocations in the derived class constructor - there's your leek.