Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C (C89, C99 und C11) ::  In C89 zu programmieren...  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
TyRoXx
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.06.2009
Beiträge: 1034
Beitrag TyRoXx Mitglied 08:01:13 12.04.2012   Titel:   Re: In C89 zu programmieren...            Zitieren

cooky451 schrieb:

Und ja, C hat definitiv ein Problem was Resource-Management angeht. Und ja, du hast recht. Warum sollte man in C Programmieren? Es gibt aus sprachlicher Sicht eigentlich keine Gründe dafür. Selbst wenn man keine Exceptions und keine Polymorphie will, Destruktoren sind etwas, das C einfach fehlt. (Obwohl es natürlich nicht zur Sprache passen würde.)

Allerdings stellt sich die Frage, was du mit diesem Thread bezwecken willst. Die meisten User hier werden wohl C++ bevorzugen, und niemand hier wird den Lehrplan deiner Uni ändern können. Wenn du diese Diskussion führen willst, dann bitte gleich mit dem MOC (Master Of C) persönlich: Linus. ;)

Der Blödmann ist gegen C++, weil man damit viel leichter Scheiße produzieren kann. C++ ist "in", jeder Vollidiot kopiert sich aus dem Internet etwas zusammen. C ist für Anfänger eher unattraktiv, weil man Hintergrundwissen benötigt, um die Sprachkonzepte zu verstehen und sinnvoll anzuwenden.
C++ hat eine lange Entwicklung von C mit Klassen zu C++11 erlebt. Compiler kommen langsam hinterher, Literatur wird nicht jünger und die Nähe zu C verleitet zu scheußlichen Hacks. C++ ist also ein großes Durcheinander und nur erfahrene Programmierer können damit guten Code bauen, weil sie schon viele Fehler kennen, die man machen kann.
C ist viel schlanker, es gibt nicht zig Möglichkeiten, etwas zu lösen. Zum Beispiel gibt es keine Methoden, Lambdas, Konstruktoren, überladbare Operatoren, sondern einfach nur Funktionen, die man nicht einmal überladen kann. C hat sich auch nicht stark verändert. Aus Kompatibilitätsgründen verwendet man meist C89 und gut ist.
C++ ist als Sprache überlegen, aber das ist in der Praxis nicht das einzige Kriterium. Bei Linux reicht C eben aus und man vermeidet die Probleme von C++.

_________________
.. aber dann wäre C++ uneinheitlich und nicht mehr so anfängergerecht.
Kenner der Wichtigtuer
Unregistrierter




Beitrag Kenner der Wichtigtuer Unregistrierter 10:06:17 12.04.2012   Titel:   Re: In C89 zu programmieren...            Zitieren

Steffo schrieb:
Hier siehst du einen Patch, der einen malloc() durch ein VLA ersetzt:

http://git.minix3.org/?p= ....... 607730dbc697bd505c2773182

Ich sehe da kein VLA.
Unregistrierter





Beitrag Unregistrierter 10:57:12 12.04.2012   Titel:   Re: In C89 zu programmieren...            Zitieren

Kenner der Wichtigtuer schrieb:
Steffo schrieb:
Hier siehst du einen Patch, der einen malloc() durch ein VLA ersetzt:

http://git.minix3.org/?p= ....... 607730dbc697bd505c2773182

Ich sehe da kein VLA.

OK, ich nehme alles zurück und behaupte das Gegenteil. :)
Unregistrierter





Beitrag Unregistrierter 11:46:05 12.04.2012   Titel:              Zitieren

Man muss mit VLAs tatsächlich vorsichtig umgehen:

Code:
One problem that may be hidden by a language's support for VLAs is that of the underlying memory allocation: in environments where there is a clear distinction between a heap and a stack, it may not be clear which, if any, of those will store the VLA.
 
For example, the GNU C Compiler allocates memory for VLAs on the stack. If a VLA is too large, no error occurs immediately; instead, attempts to use the VLA may lead to segmentation faults later in the execution of the program.


http://en.wikipedia.org/wiki/Variable-length_array
seldon
Unregistrierter




Beitrag seldon Unregistrierter 15:49:07 12.04.2012   Titel:              Zitieren

Dieses spezielle Problem besteht allerdings auch bei Arrays fester Länge.
Unregistrierter





Beitrag Unregistrierter 15:56:27 12.04.2012   Titel:              Zitieren

Allerdings kannst du das dann besser kontrollieren, weil dir die Größe bekannt ist.
Bashar
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17754
Beitrag Bashar Mitglied 16:05:47 12.04.2012   Titel:              Zitieren

Wie denn?

_________________
OSL♥
Unregistrierter





Beitrag Unregistrierter 16:46:28 12.04.2012   Titel:              Zitieren

Wenn ich weiß, ich brauch einen Puffer von 1 MB, dann würde ich nicht auf die Idee kommen den Puffer auf dem Stack zu alloziieren. :P
Bashar
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17754
Beitrag Bashar Mitglied 16:51:51 12.04.2012   Titel:              Zitieren

Und wenn du einen Puffer von 128 Bytes brauchst? Woher weißt du dann, ob der Stack ausreicht?

Rhetorische Frage, kürzen wirs ab: Du weißt es nicht.

_________________
OSL♥
knivil
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.02.2009
Beiträge: 5870
Beitrag knivil Mitglied 16:57:01 12.04.2012   Titel:              Zitieren

Zitat:
VLAs sind sehr praktisch: Man braucht keinen Malloc-Funktionsaufruf, die Ausnahmebehandlung entfällt, das free() und der Gedanke, wann man Speicher wieder frei gibt, ebenso.
Benutze bitte keine Messer, du koenntest dich sehr oft schneiden. Nimm bitte Java und ueberlasse C den echten Programmierern.

Zitat:
Stell dir vor, du macht am Anfang des Funktionsrumpfes ein malloc() und am Ende ein free(). Nach dem malloc() kommen jedoch verschiedene switch cases und eins davon macht ein return... Glückwunsch: Du hast ein Memory Leak.
Ich weiß... so etwas passiert DIR natürlich nicht...
Genau. Auch gibt es "Lint"-Tools, die das ueberpruefen. Und nochmal: Bitte benutze kein Messer.

Das musste mal gesagt werden! Ach ja, ich distanziere mich sofort wieder davon.

_________________
If it were not for laughter, there would be no Tao.
Sie können einen Beitrag nicht so schnell nach Ihrem letzten absenden, bitte warten Sie einen Augenblick.
c++.de :: C (C89, C99 und C11) ::  In C89 zu programmieren...  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.