Question: Design a nested structure to represent an error log where an `ErrorLog` structure contains an array of `ErrorEntry` structures, each with a dynamically allocated error message and a nested `Timestamp` structure. Write a C program that:
→ Dynamically logs errors with timestamps, allowing retrieval of error messages by time or severity.
→ Implements functions to clear the log, compress the log by removing less severe errors, and save the log to a file.
→ Explain how you handle memory allocation failures and ensure that the system remains stable even in low-memory conditions.