Fehler in einem C-Quellcode

Hallo zusammen,

ich hab eine Frage in C die ich einfach nicht lösen kann.
Gegeben ist folgender C-Code:

char* str_bis(char* quelle, int bis)
{
char tmp[128];
memset(tmp, 0x00, sizeof(tmp));
if(bis>strlen(quelle))
return tmp;
else if(bis>127)
{
printf(?String zu gross?);
memcpy(tmp, quelle, 128);
return tmp;
}
else
{
for(int i=0; i

Hallo Achim!

Ich hab’s mal auf die wesentlichen Zeilen gekürzt:

char\* str\_bis(char\* quelle, int bis)
{
 char tmp[128];
 return tmp;
}

Was hier passiert: Beim Aufruf der Funktion wird am Stack ein Speicherbereich für 128 char’s reserviert. Dieser Speicher wird beim Verlassen der Funktion wieder freigegeben.
Alles was das Programm danach noch mit dem Speicher macht (der ja nicht mehr reserviert ist und somit beliebig überschrieben werden kann) führt potentiell zu einem Fehler. Einem übrigens, der sich recht gut verstecken kann…

Falls du noch weitere Fragen hast - einfach nachhaken.

Beste Grüße,
TheBeast

Danke, das ist es!

Grüße Achim