struct tm *gmtime(const time_t *tod), wieso return als zeiger ?



  • Hi
    ich programmier erst seit kurzem mit der stl
    ich wollt man nachfragen wieso die funktion

    struct tm *gmtime(const time_t *tod);
    

    die struktur tm als zeiger zurückgibt.
    muss ich den zeiger wieder freigeben oder nicht ?
    ( ich hab den letzen monat mit java programmiert, da kommt man aus der übung mit dem garbage-container )

    achja und was ist bitte

    int tm_isdst;      Daylight Saving Time
    

    ?



  • gmtime arbeitet mit statischem Speicher, etwa so:

    tm* gmtime(const time_t *tod) {
      static tm result;
      ...
      return &result;
    }
    

    Das heißt erstens: Nicht freigeben. Zweitens: Wenn du gmtime danach nochmal aufrufst, ist der erste Wert futsch, also musst du ihn dir vorher kopieren, wenn du ihn später noch brauchst. Drittens gibt das Probleme mit der Threadsicherheit.



  • Außerdem ist das nicht die STL. Die Standard Template Library sind die Container (vector etc.) und damit arbeitenden Algorithmen. Was du meinst, ist die Standardbibliothek, bzw. hier die übernommene C-Standardbibliothek. Nur so nebenbei 😉

    Und dst/Daylight Saving Time ist das, was hier "Sommerzeit" heißt. Die MSDN sagt dazu:

    MSDN schrieb:

    tm_isdst
    Positive value if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative value if status of daylight saving time is unknown. If the TZ environment variable is set, the C run-time library assumes rules appropriate to the United States for implementing the calculation of daylight-saving time (DST).



  • ja hast recht ist die standart lib

    und wieso arbeitet der so ?
    und was meinste mit der threadsicherheit ?


Anmelden zum Antworten