josefk (nologin?) wrote:
> ich überlege gerade wie man denn zusammenhängenden Speicher reserviert?
> malloc() ist da ja keine Lösung, ...
Warum nicht? Es ist vielleicht nicht die beste Lösung, aber "keine"?
1 | extern char cbuffer[];
|
2 | extern char *p_cbuffer;
|
> Dann definiere ich diese Werte in meiner main.c und in einer
> Unterfunktion
1 | //main.c
|
2 | char *p_cbuffer = 0;
|
3 | //Funktion in einer anderen .c, die von main.c aufgerufen wird
|
4 | char cbuffer[50];
|
5 | p_cbuffer = &cbuffer;
|
>
> Funktioniert das? Bzw. bleibt mir das Speicherfeld nach Verlassen der
> Funktion erhalten?
Nein, geht so nicht. Du definierst in der Funktion eine lokale Variable,
die genauso heißt wie die globale (cbuffer). Nach Verlassen der Funktion
ist diese lokale Variable nicht mehr gültig. Es würde gehen, wenn du sie
als static deklarierst. Das globale cbuffer ist dann allerdings gänzlich
überflüssig. Und ob das überhaupt sinnvoll ist, hängt davon ab, für was
das Ganze letztlich gut sein soll.
PS: Die Zeile "p_cbuffer = &cbuffer;" ist fehlerhaft. Mosert da der
Compiler gar nicht wegen "incompatible pointer type"?