打印
[其他]

内存相关的malloc函数和calloc函数

[复制链接]
2871|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-6-18 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、malloc函数
malloc函数是C语言中用于动态内存分配的主要函数之一。它的原型如下:

1void* malloc(size_t size);
malloc函数接受一个size_t类型的参数,表示要分配的字节数,并返回一个指向分配的内存区域的指针。如果内存分配成功,则返回非空指针;如果内存分配失败,则返回NULL。

malloc函数的示例代码:

 1#include <stdio.h>  
2#include <stdlib.h>  
3
4int main(int argc, char *argv[]) {  
5    int* p;  
6    int n = 5;  
7
8    // 使用malloc分配内存  
9    p = (int*)malloc(n * sizeof(int));  
10    if (p == NULL) {  
11        printf("内存分配失败!\n");  
12        return 1;  
13    }  
14
15    // 使用分配的内存  
16    for (int i = 0; i < n; i++) {  
17        p[i] = i + 1;  
18    }  
19
20    // 打印数组元素  
21    for (int i = 0; i < n; i++) {  
22        printf("%d ", p[i]);  
23    }  
24    printf("\n");  
25
26    // 释放内存  
27    free(p);  
28
29    return 0;  
30}

在上面的示例中,首先使用malloc函数分配了一个大小为n个int类型的内存区域,并将返回的指针赋值给p。然后,使用这块内存存储了一些数据,并打印出来。最后,使用free函数释放了这块内存。

2、calloc函数
calloc函数与malloc函数类似,也是用于动态内存分配的。它的原型如下:

1void *calloc(size_t nmemb, size_t size);
calloc函数接受两个参数:nmemb表示要分配的元素个数,size表示每个元素的大小。与malloc不同的是,calloc还会将分配的内存区域初始化为0。

calloc函数的示例代码:

 1#include <stdio.h>  
2#include <stdlib.h>  
3
4int main(int argc, char *argv[])  {  
5    int* p;  
6    int n = 5;  
7
8    // 使用calloc分配并初始化内存  
9    p = (int*)calloc(n, sizeof(int));  
10    if (p == NULL) {  
11        printf("内存分配失败!\n");  
12        return 1;  
13    }  
14
15    // 打印数组元素(应为0)  
16    for (int i = 0; i < n; i++) {  
17        printf("%d ", p[i]);  
18    }  
19    printf("\n");  
20
21    // 释放内存  
22    free(p);  
23
24    return 0;  
25}

在上面的示例中,使用calloc函数分配了一个大小为n个int类型的内存区域,并将返回的指针赋值给p。由于calloc会将分配的内存区域初始化为0,因此打印出来的数组元素都应该是0。最后,使用free函数释放了这块内存。

使用特权

评论回复
评论
forgot 2024-6-25 10:08 回复TA
申请堆空间 

相关帖子

沙发
LOVEEVER| | 2024-7-15 14:50 | 只看该作者
malloc函数接受一个size_t类型的参数,表示要分配的字节数,并返回一个指向分配的内存区域的指针

使用特权

评论回复
板凳
szt1993| | 2024-7-17 19:06 | 只看该作者
calloc函数接受两个参数:nmemb表示要分配的元素个数,size表示每个元素的大小。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

209

主题

1404

帖子

3

粉丝