C 作为参数传递后,字符指针已损坏
我有一个这样的函数C 作为参数传递后,字符指针已损坏,c,string,memory,C,String,Memory,我有一个这样的函数 #define LEN 10 #define MAX 200 void f(char test[][LEN]) char test[MAX][LEN]; : : f(test); 我有这样的代码 #define LEN 10 #define MAX 200 void f(char test[][LEN]) char test[MAX][LEN]; : : f(test); 现在,当我使用dbx跟踪代码时 在调用函数f之前,我打印变量,数组都是空的。然后在调用函数f(t
#define LEN 10
#define MAX 200
void f(char test[][LEN])
char test[MAX][LEN];
:
:
f(test);
我有这样的代码
#define LEN 10
#define MAX 200
void f(char test[][LEN])
char test[MAX][LEN];
:
:
f(test);
现在,当我使用dbx跟踪代码时
在调用函数f之前,我打印变量,数组都是空的。然后在调用函数f(test)时,指针被破坏,数组的某些元素指向垃圾内存。它发生在参数传递之后
原因可能是什么
我为此工作了很长时间,完全迷失了方向
有人能提供一个提示吗?您可能正在破坏堆栈
它可能是在
f
之前调用的某个函数,需要返回一个值,并且并非所有的执行路径都以return
语句结尾。您能给我们展示f(test)
之前的代码和f
函数的主体吗?我想您至少需要发布f()的部分代码
。但问题是我在调用函数之前和传递参数之后立即打印变量。函数体尚未执行。test
的定义中没有指针,我没有传递值。但是,f()
中的缓冲区溢出可能会更改main
中test
的值。我记得你说过你调用了该函数?请给我们完整的代码。你真的在填充2D数组吗?