As everyone suggested, seems I was writing outside of the arrays by one byte, the one for the null-terminator. Now the destructor deletes smoothly, thanks everyone.
What leaves me puzzled is the problem popping out when I deallocate, rather than when I actually write to memory. Shouldn't a memory access & modification in an unallocated area of the heap trigger an access violation, rather than a delete? I thought the memory manager would be more "protective"... but maybe I was being too optimistic :P
Again, thanks a lot