字符串指针释放free

用malloc申请了一个12字节的内存空间,用char*指针指向,最后free释放的时候引发异常不能运行,帮忙解答一下原因和解决办法吧,万分感谢

#include
#include
void main()
{
    char* s = (char*)malloc(sizeof(char) * 12);
    if (s != NULL)
    {
        s = "hello world";
        printf("%s", s);
    }
free(s);
}

img

img

s = "hello world"; 这修改了s指针地址,当然不能free了
改为strcpy(s,"hello world");
头文件增加#include <string.h>

s = "hello world"; 这句等价于 char * s = "hellod world" ,定义的 s 是常量,上面的malloc()没作用,所以free(s)出错。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
    char* s;//= (char*)malloc(sizeof(char) * 12);
    if (s != NULL)
    {
        //strcpy(s, "hello world"); 
        s = "hello world";
        printf("%s", s);
    }
    //free(s);
}

https://wenku.baidu.com/view/c514aff483eb6294dd88d0d233d4b14e85243e7f.html?_wkts_=1667963284300