内存问题:
char *str()
{
char *str="cccc";
return str;
}
如上,看似str是临时变量,函数返回时,栈销毁。但是一般char *str="cccc";这样初始化,变量*str是放在常量区。所以调用该函数,正常返回“cccc”
如下初始化,str会放在临时变量的内存里,导致运行错误:
char *str()
{
char str[]="cccc";
return str;
}
本文探讨了C语言中字符串处理的内存问题,对比了两种不同的字符串初始化方式:使用指针指向常量字符串与直接在函数内定义字符串数组。分析了这两种方式在内存管理上的区别及其可能导致的运行错误。
内存问题:
char *str()
{
char *str="cccc";
return str;
}
如上,看似str是临时变量,函数返回时,栈销毁。但是一般char *str="cccc";这样初始化,变量*str是放在常量区。所以调用该函数,正常返回“cccc”
如下初始化,str会放在临时变量的内存里,导致运行错误:
char *str()
{
char str[]="cccc";
return str;
}
1101
1523
6096

被折叠的 条评论
为什么被折叠?