Chinaunix首页 | 论坛 | 博客
  • 博客访问: 802859
  • 博文数量: 186
  • 博客积分: 10075
  • 博客等级: 上将
  • 技术积分: 2776
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-06 13:18
文章存档

2012年(2)

2011年(1)

2010年(15)

2009年(56)

2008年(112)

分类:

2008-05-16 21:30:56

下面一段小程序
 
#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);
  test(0);
}
 
在HP-UX上输出
buf=
buf=test
buf=test
在linux上输出
buf=&×#(¥(¥ #乱码
buf=test
buf=test
 
可见虽然buf是局部变量,但是HP-UX上只是初始化一次,以后每次都是保留上次的数据,而linux不做初始化,也每次保留上次数据,因为虽然是局部变量,实际上在进程空间中buf每次的地址应该都是一样的。
 
所以对于这种情况一般都要memset将buf手动置空。
 
 
阅读(793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~