Using `numpy_to_vtk` I can't seem to get arrays to stay in dataset?

It seemed that the obvious answer was to not have NumPy allocate the data memory.
This is related to a problem I had earlier.

So, rather than:

a = numpy_to_vtk(large_NumPy_array)
dataset.GetPointData().AddArray(a)
dataset.Modified()

I did this:

a = vtk.vtkFloatArray()
a.SetNumberOfComponents(1)
for e in large_NumPy_array:
    a.InsertInextValue(e)

dataset.GetPointData().AddArray(a)
dataset.Modified()