It's your constructor which is the problem

> ptr = description;
You've already allocated memory, then copied it.
This just trashes that with a pointer to some memory you didn't allocate, so BOOM happens when you try and free it.