There is a serious bug in 1.01 and some earlier Arduino versions that may cause crashes when you use SD.h and/or String.
The bug is in the function free() which deallocates memory.
SD.h calls free() when you close a file.
String may call free() when the size of a string changes or in destructors.
Frequent opening and closing of files, especially multiple file, may cause a crash in SD.h.
See this for an example of the String problem http://arduino.cc/forum/index.php/topic,115552.0.html
The above topic also describes two fixes for the free() bug.
The SdFat library does not call free(). The bug is in the Arduino SD.h wrapper for SdFat.