Whenever there is a game crash due to memory problems - the "save aborted, out of memory, try increasing vertual memory and save again" message - the current .sav file is eaten. (whichever .sav file was last saved before the memory problem, is eaten, beit autosav, quicksav, or a custom named game-sav file). Nearly always increasing vertual memory is not an option - especially if you have it set to the maximum vertual memory XP will recognise anyway. (I have 2Gb Ram and 4Gb vertual memory on the PC).
It is intensly irritating, at times downright infuriating, as most times almost by definition most memory full errors will occur mid-late game when things are getting complex, a lot of work and time consuming between saves (on Gigantic / Huge maps). Memory leaks are always hard to erradicate, some never are as the 'buffer' provided by the User's PC memory hides them long enough for them not to be an issue. But they will always occur, especially on Gigantic maps, as with the best will in the world its nearly impossible to stop it with the huge number of objects being manipulated.
However when it does happen, you loose the current .sav file, which is nuts. With me its usually when I do a safety save after a lot of work to guard against a crash etc - only to find I hit the memory full saga and the existing sav file has been eaten for lunch as well. End result is I loose the current efforts, plus all the work prior to the previous save as well because not only was there a memory problem its eaten the last .sav file, that could be a looooong time and ..... grrrrr
The deleted save file does not appear in the XP TrashCan, so it cant be retrieved from there either. Whichever way you look at it, your stumped.
The Save routine should be changed to initially copy the current .sav file as "SafeSav.sav" - or something - then proceed with the processing. If the processing falls over due to lack of memory, the file is then renamed back to whatever .sav file it was at the start of the save routine - either automatically within the save routine, or is there for the user to manually rename. At least then "all" you loose are your efforts during the time between the last save, and the current memory problem - not the whole of the last efforts as well.
Its a small defensive programming measure very easily implemented that would save a lot of grief.
Regards
Zy