Sd card stops working after a day of use.

SurferTim,

I assume SD.h does fail to open files when memory is exhausted.

SdFat does not use dynamic memory. The SD.h wrapper for SdFat uses malloc().

SdFat allocates a single 512 byte block buffer from global memory here:

SdFat sd;

Each file requires 31 bytes for AVR boards and 40 bytes for ARM boards. This memory is allocated from global memory or the stack, depending where this statement is.

SdFile file;