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;
}
输出结果: