如果在一个函数内
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掉