文章目录
一、引言
- 在C语言中,提供了几个可以管理内存的函数,可以在<stdlib.h>中找到,如下图所示:
注:
void * 类型表示未确定类型的指针。C、C++ 规定 void * 类型可以通过类型转换强制转换为任何其它类型的指针
- 代码实现:
#include <stdio.h> #include <stdlib.h> //引入内存管理的头文件 #include <string.h> int main() { char name[100]; char *p; strcpy(name, "xiao ma ge"); // 动态分配内存,二选一 p = calloc(200, sizeof(char)); // p = (char *)malloc(200 * sizeof(char)); if (p == NULL) { fprintf(stderr, "Error,unable to allocate require memeory\n"); } else { strcpy(p, "ai xue xi!"); } // 重新分配内存,该方法可能造成内存泄露,一旦realloc运行失败,则返回NULL,此时p的值为NULL // 造成内部才能泄露 p = (char *)realloc(p, 100 * sizeof(char)); strcat(p, "ai yun dong!"); printf("name:%s \n", name); printf("p:%s", p); // 内存释放 free(p); return 0; }
- 运行结果:
name:xiao ma ge p:ai xue xi!ai yun dong!