用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);
}
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