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