2010-11-19 10 views
0

Ich habe eine Funktion wie diesechar Zeiger beschädigt, nachdem er als Parameter übergeben

#define LEN 10 
#define MAX 200 
void f(char test[][LEN]) 

Ich habe einen Code wie dieser

char test[MAX][LEN]; 
: 
: 
f(test); 

Nun, wenn ich den Code mit dbx verfolgen.

Unmittelbar Vor dem Aufruf der Funktion f, drucke ich die Variable, das Array sind alle leer. Und dann, nachdem die Funktion f (test) aufgerufen wurde, ist der Zeiger beschädigt und ein Element des Arrays zeigt auf Mistspeicher. Dies geschieht unmittelbar nachdem der Parameter übergeben wurde.

Was könnte der Grund sein?

Ich arbeite seit langer Zeit daran und total verloren.

Kann jemand einen Hinweis anbieten?

+1

Können Sie uns den Code vor 'f (Test)' und den Körper der 'f' Funktion zeigen? – birryree

+0

Ich denke, Sie müssen mindestens einen Teil des Codes für 'f()' posten. –

+0

aber das Problem ist, ich drucke die Variable unmittelbar vor dem Aufruf der Funktion und nachdem der Parameter übergeben wurde. Der Hauptteil der Funktion wird noch nicht ausgeführt. – skydoor

Antwort

0

Sie beschädigen möglicherweise den Stapel.

Es könnte eine Funktion sein, die vor f aufgerufen wird und einen Wert zurückgeben muss und nicht alle Ausführungspfade in einer return-Anweisung enden.

Verwandte Themen