Simply put, your copy constructor is flawed.
If you have pointers inside the class and you copy those pointers to the new class, both pointers will be invalid when the destructor is run. This is called shallow copying.
What you do is allocate new memory in the new class and copy over the data inside the pointer from your class to the new. That way, each destructor can release its own data, no more error.
Or better yet, just use a smart pointer! Then the object won't be deleted so long as it's in use.