下面一段小程序
#include
#include
void test(int i) {
char buf[100];
if(i == 1) strcpy(buf, "test");
printf("buf=%s\n", buf);
}
int main() {
test(0);
test(1);
}
在HP-UX上输出
buf=
buf=test
buf=test
在linux上输出
buf=&×#(¥(¥ #乱码
buf=test
buf=test
可见虽然buf是局部变量,但是HP-UX上只是初始化一次,以后每次都是保留上次的数据,而linux不做初始化,也每次保留上次数据,因为虽然是局部变量,实际上在进程空间中buf每次的地址应该都是一样的。
所以对于这种情况一般都要memset将buf手动置空。
阅读(793) | 评论(0) | 转发(0) |