Hallo Fabian, 

Fabian Hänsel <[email protected]>:

> Lösung gefunden: das malloc() selbst hat nur wenig mit dem segfault zu 
> tun. Ursache ist ein voller Heap.
> 
> Ich hatte sinngemäß Folgendes:
> 
>    void func_with_malloc(int length)
>    {
>      char data[length];
>      unsigned char *srcsrc;
> 
>      srcsrc = (unsigned char*) malloc(length);
>    }
> 
> Wenn nun length zu groß wurde, fühlte sich das anschließende malloc 
> bedrängt.
> 
> Unklar ist mir, wieso ich in dem Fall nicht bei CALL einen Heap Overflow 
> oder ähnliches gemeldet bekomme.

Weil vor dem malloc() noch keine Schreiboperationen im Speicher erfolgen.
Die Definition von data[] setzt erstmal bloss den Stackpointer deutlich nach
unten. Erst das Schreiben des Arguments zu malloc() oder der Ruecksprung-
Adresse (je nach Call-Konvention) in den Stack zeigt das Problem.


Holger

_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an