【发布时间】:2010-11-19 22:34:10
【问题描述】:
我有这样的功能
#define LEN 10
#define MAX 200
void f(char test[][LEN])
我有这样的代码
char test[MAX][LEN];
:
:
f(test);
现在当我使用 dbx 跟踪代码时。
在调用函数f之前,我打印了变量,数组都是空的。然后调用函数 f(test) 后,指针已损坏,数组的某些元素指向垃圾内存。它发生在参数传递之后。
可能是什么原因?
我为此工作了很长时间,但完全迷失了方向。
谁能给个提示?
【问题讨论】:
-
你能告诉我们
f(test)之前的代码和f函数的主体吗? -
我认为您至少需要为
f()发布一些代码。 -
但问题是我在调用函数之前和传递参数之后立即打印变量。函数体尚未执行。
-
test的定义中没有指针,我没有按值传递。但是,f()中的缓冲区溢出可能会更改main中test的值。 -
我以为你说你调用了函数?请向我们展示完整的代码。你真的在填充你的二维数组吗?