【问题标题】:char pointer corrupted after passing as parameterchar 指针作为参数传递后损坏
【发布时间】: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() 中的缓冲区溢出可能会更改 maintest 的值。
  • 我以为你说你调用了函数?请向我们展示完整的代码。你真的在填充你的二维数组吗?

标签: c string memory


【解决方案1】:

您可能正在破坏堆栈。

它可能是在f 之前调用的某个函数,需要返回一个值,并且并非所有执行路径都以return 语句结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2013-09-28
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多