c的动态内存管理

在linux系统下使用malloc提示警告,解决方法,加入头文件<stdlib.h>

首先来个基本的例子
int *p=(int *)malloc(sizeof(int));(当malloc无法分配内存时会返回null,所以在使用它返回的指针前最好先检查null是否为空,如果不为空再使用p指针)

*p=100;

printf("%d ",*p);

free(p);(free指针参数应该只指向有malloc分配的内存地址)


下面这个例子会运行出错,因为name这块内存还没有分配内存空间

char *name;

scanf("%s",name);

printf("%s ",*name);


初始化静态或者全局变量事不能调用函数,例如下面这条语句是错误的

static int *pi=malloc(sizeof(int));


分配内存空间的函数还有

int *pi=calloc(5,sizeof(int));指针pi的内存空间为5*sizeof(int)

memset(pi,0,5*sizeof(int));用0来填充内存空间为20的指针pi

string=realloc(*p,10);  第一个参数指向原内存块,第二个参数表示分配大小



原文地址:https://www.cnblogs.com/biaopei/p/7730671.html