malloc-向内存申请一块连续可用的空间,并返回指向这块空间的指针 free-动态内存的释放和回收
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
int main() {
int* p = (int*)malloc(10 * sizeof(int));
if (p == NULL) {
printf("%s\n", strerror(errno));
}
else {
int i = 0;
for (i = 0; i < 10; i++) {
*(p + i) = i;
}
for (i = 0; i < 10; i++) {
printf("%d ", *(p + i));
}
}
free(p);
p = NULL;
return 0;
}
0 1 2 3 4 5 6 7 8 9
calloc-为num个大小为size的元素开辟一块空间,并且把空间的每个字节初始化为0
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
int main() {
int* p = (int*)calloc(10, sizeof(int));
if (p == NULL) {
printf("%s\n", strerror(errno));
}
else {
int i = 0;
for (i = 0; i < 10; i++) {
*(p + i) = i;
}
for (i = 0; i < 10; i++) {
printf("%d ", *(p + i));
}
}
free(p);
p = NULL;
return 0;
}
0 1 2 3 4 5 6 7 8 9
realloc-对动态开辟内存大小进行调整
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
int main() {
int* p = (int*)malloc(10 * sizeof(int));
if (p == NULL) {
printf("%s\n", strerror(errno));
}
int* p2 = realloc(p, 40);
int i = 0;
for (i = 0; i < 10; i++) {
*(p2 + i) = i;
}
for (i = 0; i < 10; i++) {
printf("%d ", *(p2 + i));
}
free(p);
p = NULL;
return 0;
}
0 1 2 3 4 5 6 7 8 9
|