Programm beendet sich ohne Fehlermeldung oder Stacktrace
-
Wenn du C++ machst, wieso dann überhaupt new für irgendwas? Und so viele Pointer? C++ ist nicht Java. Mit idiomatischem C++ entfallen solche Probleme ganz von alleine.
-
Ich mag pointer.
-
CookieB schrieb:
Ich mag pointer.
Ich auch.
Man muss eben nur sehr sorgfältig programmieren. Old school und so.
-
CookieB schrieb:
Ich mag pointer.
Dann ist es ein selbst gemachtes Problem. Insbesondere wenn man von sich selber sagt
lag daran das Ich einen Teil von Pointern missverstanden hab
EOP schrieb:
Man muss eben nur sehr sorgfältig programmieren. Old school und so.
Darfst du gerne tun, aber es sollte zumindest ein jeder wissen, dass man sich damit das Leben selber unnötig schwer macht. Manche Leute bekommen Pointergefrickel tatsächlich so beigebracht und kennen gar nichts anderes. Einem Zivilisationsflüchtling mag ich mich nicht aufdrängen (der ist selber schuld :p ), aber dem armen Wilden aus dem Amazonasdschungel kann man schon mal erzählen, dass er nicht mit 14 an Bilddarmentzündung sterben braucht, wenn er nicht möchte
-
Stört doch keinen ist ja hobby. Hab ja gute hilfe gekriegt.
-
SeppJ schrieb:
Darfst du gerne tun, aber es sollte zumindest ein jeder wissen, dass man sich damit das Leben selber unnötig schwer macht.
Macht es nicht - es macht Spaß!
-
EOP schrieb:
SeppJ schrieb:
Darfst du gerne tun, aber es sollte zumindest ein jeder wissen, dass man sich damit das Leben selber unnötig schwer macht.
Macht es nicht - es macht Spaß!
Vieles, was unnötig schwer ist, macht manchen Menschen Spaß. Kann schon sein. Aber dass es unnötig schwer ist, ist trotzdem nicht zu leugnen. ~(Falls es sich um produktive Arbeit handeln sollte, wäre es sogar fahrlässig und Verschwendung. Also bitte nur als Hobby!)~
-
Habe den produktiven Zweig schon vor einer Weile gekappt.
Nur noch Hobby und Spaß und schmutzige Sachen.
-
Dann kann man auch so ehrlich sein und direkt C verwenden. Das ist noch ein kleines bisschen schneller und kompiliert vor allem rasend schnell. Und man bekommt vom "Zivilisierten Mann" (Imperialist :p) keine bösen Blicke zugeworfen, weil er Pointermagie eh nicht versteht.
Dein Code als Einliner in C:
char*buffer = calloc(100,1);
Übrigens, wenn ich recht in der Annahme gehe, dass das Code für
recv
werden soll - das memset lässt du dann direkt am Besten. Anfängerfehler, weil man meint, dass man ja eh nur Daten != 0 zurückbekommt, und wenn man strlen macht, klappt das dann. Die Länge bekommst du aber vom Kernel, der Rückgabewert vonrecv
.ssize_t length_cur = 0; /*WARUM zum Teufel ein ssize_t? errno setzen ging nicht oder was?*/ size_t length_all = 0; do { /*Timeout-Handling*/ /*Prüfen, ob noch Buffer da ist*/ /*Prüfung auf <1 - 0 wäre OK, wenn kein Timeout-Handling gemacht werden würde, aber dann **läuft deine CPU ja nur noch in der Loop. Und -1 ist halt Fehler (deswegen, warum nicht errno **setzen?)*/ if((lengh_cur = recv(socket,buffer + length_all,length_all - buffer_length)) < 1) { /*Fehlerhandling*/ } length_cur += length_all; /*Und hier halt eine Prüfung, ob du noch Bytes benötigst oder ob es dies war.*/ }
-
Ich wusste, ich hab was übersehen - Zeile 12 sollte sein:
buffer_length - length_all
-
Altes, ich geb auf - das ist Copy-Paste-Code, und ich Dämlack bekomme nur die Variablennamen falsch ersetzt.
length_all += length_cur;
Wie schwer ist es, eine ordentliche Substitution hinzubekommen?!