From the documentation: "The sender should not access any part of the send buffer after a nonblocking send operation is called, until the send completes." That would include disposing of it.
BTW the documentation is completely incorrect in describing this as 'non-blocking'. The correct term for what is happening here is 'asynchronous'. If it was merely non-blocking there would be no problem with the buffer going out of scope, as the MPI_Isend() method would have completely finished with it once it had returned.