I don't think it can be easily done, because when calling free() twice no exception is thrown - like in the case of trying to allocate memory and the alloc fails - it's rather undefined behavior. Check out this post for more details.
What you could do is implements your own mechanism for keeping track of the allocated/deallocated memory - sort of like how smart pointers work. Only you would be specifically trying to identify when memory is being deallocated twice.