Dynamische Speicherverwaltung



  • Ich will micht jetzt natürlich nicht darüber streiten was man im echten Leben teilweise fabriziert. Das ist eindeutig deine Domäne...

    <winkmitdemzaunpfahl>

    Das hat mit ANSI C aber nichts zu tun. Da ist das Verhalten klar definiert. Das ist also Power Off-topic.

    </winkmitdemzaunpfahl>



  • TactX schrieb:

    Ich will micht jetzt natürlich nicht darüber streiten was man im echten Leben teilweise fabriziert. Das ist eindeutig deine Domäne...

    <winkmitdemzaunpfahl>

    Das hat mit ANSI C aber nichts zu tun. Da ist das Verhalten klar definiert. Das ist also Power Off-topic.

    </winkmitdemzaunpfahl>

    Ich kann Dir bloss wuenschen, auch mal mit uralten, fehlerhaften Compilern arbeiten zu muessen, und Dir dann anhoeren zu muessen "das kann nicht der Compiler sein! Compiler haben keine Fehler!" usw. 👎 👎 👎

    Und es gibt uebrigens mehrere verschiedene ANSI C Standards. C89, C90 und C99!



  • Power Off schrieb:

    Ich kann Dir bloss wuenschen, auch mal mit uralten, fehlerhaften Compilern arbeiten zu muessen, und Dir dann anhoeren zu muessen "das kann nicht der Compiler sein! Compiler haben keine Fehler!" usw. 👎 👎 👎

    Mir ist schon bewusst, dass Compiler fehlerhaft sein können. Aber das bespricht man dann, wie bereits erwähnt, im Compilerforum. 👍 👍 👍



  • Benennt doch das Forum in "ANSI C 99 Forum" um, dann weiss jeder, was gemeint ist.



  • Power Off schrieb:

    Benennt doch das Forum in "ANSI C 99 Forum" um, dann weiss jeder, was gemeint ist.

    Ich lasse mich gerne (durch exakte Quellenangaben) korrigieren, aber der antike Rückgabetyp char* von malloc() wurde mit dem ANSI Standard durch void* ersetzt, und somit auch das Casten unsinnig gemacht. Und genau darum ging's hier.



  • TactX schrieb:

    Ich lasse mich gerne (durch exakte Quellenangaben) korrigieren, aber der antike Rückgabetyp char* von malloc() wurde mit dem ANSI Standard durch void* ersetzt, und somit auch das Casten unsinnig gemacht. Und genau darum ging's hier.

    Das ist nicht richtig. In den ANSI C Standards von 1989/1990 wurde das Casten bei void* ausdruecklich vorgeschrieben!



  • Power Off schrieb:

    TactX schrieb:

    Ich lasse mich gerne (durch exakte Quellenangaben) korrigieren, aber der antike Rückgabetyp char* von malloc() wurde mit dem ANSI Standard durch void* ersetzt, und somit auch das Casten unsinnig gemacht. Und genau darum ging's hier.

    Das ist nicht richtig. In den ANSI C Standards von 1989/1990 wurde das Casten bei void* ausdruecklich vorgeschrieben!

    Eine etwas vertrauenswürdigere Seite sagt aber was anderes.



  • TactX schrieb:

    Eine etwas vertrauenswürdigere Seite sagt aber was anderes.

    Ich hab grad den K&R von 1988 zur Hand genommen (als der C89 Standard fertig war), und die schreiben auch davon, dass es egal ist, "void*" und andere Pointertypen zuzuweisen oder zu vergleichen. Weiss auch nicht, wieso ich der Meinung bin, dass der Standard das vorschrieb. Leider hab ich die alten Normen jetzt nicht zur Hand. Jedenfalls haben so gut wie alle C Compiler bis vor einigen wenigen Jahren eine Warnung oder gar einen Fehler (incompatible pointer type) ausgegeben, wenn man das probiert hat, auch wenn's standardwidrig war.



  • so gut wie alle C Compiler bis vor einigen wenigen Jahren eine Warnung oder gar einen Fehler (incompatible pointer type) ausgegeben, wenn man das probiert hat, auch wenn's standardwidrig war.

    Genau das ist das Problem, selbst wenn man standardkonform programmieren wollte, konnte man es nicht, da der Compiler einen Error oder ne Warning ausspuckte. Ich persönlich caste aber immer noch, gefällt mir optisch einfach besser und wehtun tut's auch niemand. 😃



  • ich hab den code mal ausprobiert und bei mir belegt das programm immer geich viel speicher unabhängig davon wie häufig die schleife durchlaufen wird.


Anmelden zum Antworten