是否需要在下面的程序中释放分配给字符串"str"的内存?如果是,free(str)是否有效?在哪个段中,内存被分配给"str"?
int main()
{
function()
}
function()
{
char *str="hello";
--
--
return
}
Run Code Online (Sandbox Code Playgroud)
char *str= "hello";
字符串文字"Hello"存储在const内存区域(在大多数常见实现中),并具有静态存储持续时间.任何修改内容的尝试都会调用UB,即str[0]='c'在大多数实现中会导致段错误.
ISO C99 2.13.4/1说
普通的字符串文字具有类型"n const char数组"和静态存储持续时间.
'static storage duration' in 3.7.1/1:
这些对象的存储应持续该程序的持续时间.
是否需要释放分配给字符串的内存
"str",在下面的程序中?
Nopes!这也是UB,因为字符串不是动态分配的.