2010-11-19 7 views
0

으로 통과 한 후 나는이문자 포인터 매개 변수

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

같은 함수가 내가 가진이

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

같은 코드가 지금은 DBX를 사용하여 코드를 추적하는 경우가 있습니다.

즉시 함수 f를 호출하기 전에 변수를 인쇄하고 배열은 모두 비어 있습니다. 그리고 f (test) 함수가 호출되면 포인터가 손상되고 배열의 일부 요소가 쓰레기 메모리를 가리키고 있습니다. 매개 변수가 전달 된 직후에 발생합니다.

어떤 이유 일 수 있습니까?

저는 오랫동안이 작업을하고 있으며 완전히 손실되었습니다.

아무도 힌트를 제공 할 수 있습니까?

+1

'f (test)'와'f' 함수의 본문 앞에 코드를 표시 할 수 있습니까? – birryree

+0

적어도 f()에 대한 코드를 게시해야한다고 생각합니다. –

+0

하지만 문제는 함수를 호출하기 직전과 매개 변수가 전달 된 직후 변수를 출력한다는 것입니다. 함수의 본문은 아직 실행되지 않았습니다. – skydoor

답변

0

스택을 손상시킬 수 있습니다.

f 전에 호출되고 값을 반환해야하는 함수 일 수 있으며 모든 실행 경로가 return 문으로 끝나는 것은 아닙니다.