struct string { size_t len; union { char* ptr_to_malloced_string; char short_string[sizeof(char*)]; } }