Blender has a reference-counted system for keeping track of objects in memory. This allows a single set of object data to be shared among multiple objects, and to be correctly freed when the number of references (what Blender calls “users”) drops to zero.
Some types of data are not immediately deleted from memory when their reference count goes to zero. For example, materials will hang around and remain accessible via the material popup menu. This allows you to assign the “orphaned” material to another object should you want to.
Data with a zero refcount is not saved to disk, so it is lost when you reload the document from the last save.
This makes sense, except some data that is not automatically deleted when its refcount goes to zero is not
made available for reassignment through any GUI function that I’m aware of.
For example, open a new default document. There will be a single mesh object in it, called “Cube”. If you go to the Object Data context in Blender 2.5x, you will see that the mesh data is also called “Cube”.
Delete that default cube. Add a new cube object. This will reuse the “Cube” object name. But its mesh data name is now “Cube.001”. That’s because the old mesh named “Cube” is still hanging around in memory with a refcount of 0.
But there is no way in the GUI to reassign that old mesh data to another object! It doesn’t even appear in the Outliner—why not?
It seems to me there is an inconsistency here which needs to be fixed.
To assign the old "Cube" objectdata to the new object, click on the "Browse" button next to the ObData name (the black one to the left with the OBData icon on it). You can choose "Cube" from there to assign it. If you then save your file and reopen it again, it will have deleted the "Cube.001" data, because its not used anymore.