Hallo Sinatra.
Warum stellst du diese Frage zu C++, wo du nur ein einziges Feature davon nutzt? Der Rest deines Codes ist blankes C.
warum funktioniert folgender Code nicht?
char* request = NULL;
char buffer[] = {"Hallo World!"};
char* p = NULL;p = request;
p += strlen(request);
for(unsigned short i = 0; i < strlen(buffer); i++) {
*p = buffer[i];
p++;
}
*p = '\0';
printf("%s", request);
>
> Meiner bescheidenen Meinung nach müsste der Code funktionieren, was er aber nicht tut. Wiso nicht?
Weil du noch nicht gelernt hast, vernünftig zu debuggen. Als erstes kompilierst du deinen Quellcode erneut, diesmal übergibst du dem Compiler aber noch die Option „-g“. Damit werden Debugging-Symbole in deine Applikation eingebunden.
Als nächstes rufst du den „gdb“ mit dem deiner Applikation als Argument auf. Befindet sie sich im aktuellen Verzeichnis, dann wie gewohnt per „./app“.
Nun startest du die Ausführung mittels „run“ und erhältst deine Lösung:
(gdb) run
Starting program: /home/ashura/test
Failed to read a valid object file image from memory.
Program received signal SIGSEGV, Segmentation fault.
0x080484b0 in main () at test.c:12
12 p += strlen(request);
Current language: auto; currently c++
Und in der Tat: welche Länge soll NULL deiner Meinung nach haben?
Einen schönen Sonntag noch.
Gruß, Mathias
--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules