2010-11-19 2 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.

Смежные вопросы