【发布时间】:2019-05-24 16:15:22
【问题描述】:
我有功能,说:
int foo(char* a)
{
printf("%d\n", (int)a);
char cmd[] = "echo hello";
system(cmd);
printf("%d\n", (int)a);
}
在 C 代码中,然后我在 linux 上运行它;这样做之后,我看到 printf 输出是:
274351760
1853775725
我只是很困惑!任何想法?! :|
【问题讨论】:
-
char cmd[] = "echo hello"; -
@wildplasser 不工作!
-
你怎么称呼 foo?
-
@JohnSibly 这只是我庞大代码的抽象部分!调用这个函数有一些回溯,但我确信在调用 system() 之前
a的值是有效的,但在调用之后它不是! -
预编辑问题中描述的行为清楚地表明
char cmd[10] = "echo hello";中的空字符终止符空间不足导致了问题或程序中的其他地方存在问题(即, 显示的代码片段不是问题的根源;其他原因正在破坏内存或以其他方式破坏程序)。