释放字符串char*str ="hello"的内存

Gpa*_*thy 2 c

是否需要在下面的程序中释放分配给字符串"str"的内存?如果是,free(str)是否有效?在哪个段中,内存被分配给"str"?

int main()
{
    function()
}

function()
{
    char *str="hello";
     --
     --
     return
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*rav 8

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,因为字符串不是动态分配的.

  • 仅供参考:UB是"未定义的行为". (4认同)