C语言内存问题

如果在一个函数内  

char *getstr() { 

  char str[30];

  str[30] = "abcdef";

  return str;

}

 

紧接着printf("%s", getstr());  //这样是可以输出的

但是如果

char *s = getstr();

printf("%s", s);  //这样是输出乱码

是因为分配的内存仅仅存在于getstr函数内,当函数结束后就没了  所以再次引用就乱码了额

 

 

char *getstr() { 

  char *str = (char *)malloc(sizeof(char) * 10);

  str[0] = 'a';
      str[1] = 'b';

  return str;

}

所以应该这样分配内存

并且在调用函数结束后  free掉

 

posted @ 2015-12-09 00:25  xadxxx  阅读(219)  评论(0编辑  收藏  举报