malloc 和 cmalloc
时间: 2024-03-18 11:35:36 浏览: 24
根据提供的引用内容,我们可以了解到malloc函数是C语言中用于动态分配内存的函数,它将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块则是剩余的内存块),并将第一块返回给用户。而cmalloc是一个第三方库,它是一个高效的内存分配器,可以用于C和C++程序中。
下面是malloc和cmalloc的使用示例:
1. malloc的使用示例
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int n = 5;
ptr = (int*)malloc(n * sizeof(int));
if (ptr == NULL) {
printf("Memory not allocated.\n");
exit(0);
}
else {
printf("Memory successfully allocated using malloc.\n");
for (int i = 0; i < n; ++i) {
ptr[i] = i + 1;
}
printf("The elements of the array are: ");
for (int i = 0; i < n; ++i) {
printf("%d ", ptr[i]);
}
}
free(ptr);
return 0;
}
```
2. cmalloc的使用示例
```c
#include <stdio.h>
#include <stdlib.h>
#include "cmalloc.h"
int main() {
int *ptr;
int n = 5;
ptr = (int*)cmalloc(n * sizeof(int));
if (ptr == NULL) {
printf("Memory not allocated.\n");
exit(0);
}
else {
printf("Memory successfully allocated using cmalloc.\n");
for (int i = 0; i < n; ++i) {
ptr[i] = i + 1;
}
printf("The elements of the array are: ");
for (int i = 0; i < n; ++i) {
printf("%d ", ptr[i]); }
}
cfree(ptr);
return 0;
}
```