malloc()开辟指定内存空间
函数原型 void *malloc(size_t size)
C 库函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。
free 释放内存空间
free
C 库函数 void free(void *ptr) 释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。
作用:1.释放,防止内存泄露
2.防止悬挂指针,野指针的一种 赋值为NULL
memset 内存初始化
函数原型 void *memset(void *str, int c, size_t n)
realloc() 扩容
函数原型 void *realloc(void *ptr, size_t size)
C 库函数 void *realloc(void *ptr, size_t size) 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。
strcpy() 复制字符串
char *strcpy(char* dest, const char *src)
以上的函数应用如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
malloc()开辟指定内存空间
free释放内存空间
*/
int main()
{
//定义一个野指针
char *p;
//原理:void* malloc(size_t size):分配所需要的内存,并把返回一个内存指向。
p=(char *)malloc(1);//(char *):强制转换char类型的指针
*p='1';
printf("%c\n",*p);
free(p);//释放内存空间
p=NULL;//防止指针悬挂
//扩容之前
p=(char *)malloc(10);
if(p==NULL)//防止单片机的内存不足,做的判断
{
printf("malloc error");
exit(-1);
}
//内存初始化
memset(p,'\0',10);
puts("内存初始化完成");
printf("扩容地址:%x\n",p);
//计算长度
int len=strlen("1234567890shikaikaihuoj");
int newlen=len-10+1;
//扩容
realloc(p,newlen);
//扩容之后的
printf("扩容之后地址:%x\n",p);
//复制字符串
strcpy(p,"1234567890shikaikaihuoj");//char *strcpy(char* dest, const char *src);dest是一个变量指针
puts(p);
puts("end");
return 0;
}
输出结果: