一. calloc
calloc 开辟空间后,会将内存置为0
//
// main.c
// cdemo
//
// Created by liyongkai on 2021/6/6.
//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char * argv[]) {
int *p = calloc(10, sizeof(int));
for (int i = 0; i < 10; i ++) {
p[i] = i;
}
for (int i = 0; i < 10; i ++) {
printf("%d", p[i]);
}
if (NULL != p) {
free(p);
p = NULL;
}
//0123456789
}
二.realloc
如果增加内存空间成功,则和malloc一样
如果增加内存空间失败,realloc会重新申请一块空间并把数据拷贝到新空间
int main(int argc, const char * argv[]) {
int *p = malloc(sizeof(int) * 5);
printf("p的指针%p",p);//p的指针0x1078ba950
int *pp = malloc(sizeof(int) * 100);//如果加上这个pp,会发现p的内存地址变了.
p = realloc(p, sizeof(int) * 10);
printf("p的指针%p",p);//p的指针0x107a17750
}
网友评论