malloc calloc realloc的用法
时间: 2023-11-25 22:08:05 浏览: 96
这三个函数都是C语言中用于动态内存分配的函数。
1. malloc
`malloc`函数用于分配指定大小的内存块,并返回指向该内存块的指针。如果分配失败,则返回NULL。
用法:`void *malloc(size_t size);`
示例:
```
int *p = (int*) malloc(sizeof(int)*10);
if (p == NULL) {
printf("Memory allocation failed\n");
} else {
// 内存分配成功,可以使用p指针来操作分配的内存
p[0] = 1;
p[1] = 2;
// ...
free(p); // 使用完后需要释放内存
}
```
2. calloc
`calloc`函数也用于分配指定大小的内存块,但是与`malloc`不同的是,`calloc`会将分配的内存块的每个字节都初始化为0,并返回指向该内存块的指针。如果分配失败,则返回NULL。
用法:`void *calloc(size_t num, size_t size);`
示例:
```
int *p = (int*) calloc(10, sizeof(int));
if (p == NULL) {
printf("Memory allocation failed\n");
} else {
// 内存分配成功,可以使用p指针来操作分配的内存
p[0] = 1;
p[1] = 2;
// ...
free(p); // 使用完后需要释放内存
}
```
3. realloc
`realloc`函数用于重新分配已经分配的内存块的大小,并返回指向该内存块的指针。如果分配失败,则返回NULL。如果新的内存块大小比原来的小,则可能会导致数据丢失。
用法:`void *realloc(void *ptr, size_t size);`
示例:
```
int *p = (int*) malloc(sizeof(int)*10);
if (p == NULL) {
printf("Memory allocation failed\n");
} else {
// 内存分配成功,可以使用p指针来操作分配的内存
p[0] = 1;
p[1] = 2;
// ...
int *q = (int*) realloc(p, sizeof(int)*20);
if (q == NULL) {
printf("Memory reallocation failed\n");
} else {
// 内存重新分配成功,可以使用q指针来操作分配的内存
q[10] = 11;
q[11] = 12;
// ...
free(q); // 使用完后需要释放内存
}
}
```
阅读全文