Problem with SD.h ... Serial.print... doesn't work

I thought the arduino software/compiler would give me some warning messages if I was out of ram

Since SRAM usage is partly static (all your arrays and strings) and partly dynamic (run-time dependent) (heap, stack, etc.), the compiler can not detect when you will, at run-time, run out of SRAM.