#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *p;//野指针(没有指向内存地址)
p = (char *)malloc(1);//malloc 创造了1字节并返回给p
*p = 'c';
puts(p);
free(p);//动态开辟后重新指向,释放p,防止出现内存泄露
p = NULL;//空指针指向NULL,防止悬挂指针(野指针)出现;
p =(char *)malloc(12);//前面释放重新创造;
if(p==NULL){ //判断p是否出现指针悬挂
printf("malloc 错误");
exit(-1);
}
memset(p,'\0',12);//内存空间初始化
printf("扩容地址:%x\n,p");
int len =strlen("huihfihihfofhowhfiow1322323213223");
int newlen = len - 12 + 1;
p = realloc(p,newlen);//扩容p为原大小,newlen为扩容后大小;
printf("扩容后地址:%x\n,p");
strcpy(p,"huihfihihfofhowhfiow1322323213223");//拷贝
puts(p);
puts("结束");
return 0;
}
【无标题】C语言中字符串的动态开辟
最新推荐文章于 2022-09-05 22:02:52 发布