问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中怎么使用malloc函数?

发布网友 发布时间:2022-04-29 09:21

我来回答

3个回答

热心网友 时间:2022-06-25 09:46

malloc只是动态分配内存存储空间。

void *malloc(long nBytes):该函数分配了nBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)

例如:char *Ptr = NULL;
Ptr = (char *)malloc(100 * sizeof(char));

就是这样!当然,具体情况要具体分析以及具体解决。比如说,你定义了一个指针,在一个函数里申请了一块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项工作就应该留给其他函数了

热心网友 时间:2022-06-25 09:46

malloc就是memory allocate动态分配内存,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,今天我们就来学习下malloc这个函数吧:

我们来了解下malloc函数的使用:

首先,包含malloc的头文件:

#include <stdlib.h>
或者
#include <malloc.h>
然后,我们需要了解一下几点:

malloc函数只接受一个形参如,int *p = (int *)malloc(sizeof(int)).先来解释下这句话的含义,int* p代表一个以int类型地址为内容的指针变量,p这个变量占4个字节(某些计算机),这个p变量是静态分配的一个变量。在某些计算机的前提下,指针变量所占的大小都是一样的,无论是char* 还是long *,因为,这些指针变量里面存放的是一个8位16进制的地址,所以占四个字节,当然这些都是在某些计算机的前提下,并不是所有的都是这样的。

malloc函数会返回开辟空间的首地址,加(int *)的目的是让计算机知道,如何去划分这个开辟的空间,因为char、int 、long这些类型的字节大小是不一样的,我们知道了首地址,还要知道是以几个字节为单元。所以,这句话一共开辟了8个字节(某些计算机上),这也是为什么写sizeof(int),而不是直接写4的原因。

malloc开辟空间所返回的首地址是动态分配的。

下面我们通过一个例子来具体了解一下:

# include <stdio.h>
# include <malloc.h>
int main(void)
{
int i = 5; //分配了4个字节 静态分配
int * p = (int *)malloc(sizeof(4));//指针变量p为静态分配,malloc开辟的空间为动态分配
*p = 5; //*p 代表的就是一个int变量,指针变量p表示是一个以int类型的地址为内容的变量
printf("%d",*p);
free(p); //freep(p)表示把p所指向的内存给释放掉,p本身的内存是静态的,不能由程序员手动释放
//p本身的内存只能在p变量所在的函数运行终止时由系统自动释放
return 0;
}
# include <stdio.h>
# include <malloc.h>
void f(int * q)
{
*q = 200;
//free(q); //把q所指向的内存释放掉,不然后面在使用*p的时候会报错,因为p所指向的内容已经被释放了
}
int main(void)
{
int * p = (int *)malloc(sizeof(int)); //sizeof(int)返回值是int所占的字节数
*p = 10;
f(p); //p是int *类型
printf("%d\n", *p);
return 0;
}
有什么问题欢迎留言讨论哦。

热心网友 时间:2022-06-25 09:47

先定义后使用
数组int a[10];
变量int b;b=9;等

全都是书上的东西~!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
吉林省内户口迁移有什么规定? 吉林户口迁移流程是什么 吉林省内户口迁移程序是什么? 德国留学银行开户经验 小脑萎缩还能恢复吗 做紫菜包饭都需要什么工具呢 大家有好的网店没 推荐一个 能一次买全... 会计所说的产值是什么 会计上生产总值是什么 企业生产总值是什么 在word的编辑状态下如何解除Word文档限制编辑 c语言malloc函数的用法 C语言 关于malloc的用法 malloc是什么意思呢?怎么用? malloc的用法,谢谢 C语言关于MALLOC的用法 malloc应如何使用? malloc函数的用法 有网易邮箱总是提示密码错误的吗 网易邮箱找回密码的过程中,提示账号不存在有几种可能性? 我无法登陆我的网易邮箱,提示我用户名错误,可是我的用户名没有错,是什么原因。 网易邮箱重置密码总是显示账号输入错误是为什么- 问一问 视频监控系统的主控设备指的是什么意思?监控终端是什么意思? 最近下载了一个APP叫Danale,简介里说可以实时观看监控视频?可是注册成功之后的添加设备是添加啥设备? 视频监控系统的IPC设备是什么设备 这种视频监控如何实施? 怎样写一封给老师的期末总结信 小孩生病住院可报销的选哪种保险阿 小孩门诊可以报销的保险 老师期末总结怎样写 生活老师的期末总结怎么写? c++中malloc的含义与用法 malloc的用法 这台科龙挂壁式空调,制冷时显示fc,应如何去除?过滤网已清洗过! malloc是什么意思,怎么使用呢 malloc函数在子函数中的使用 malloc怎么用 科龙空调显示FC什么意思? 智能头盔和普通头盔有什么区别? 骑行用的智能头盔和普通头盔有什么区别? 菜鸟驿站的管理 若物业公司在小区开设菜鸟驿站,应如何去管理? 菜鸟驿站归什么政府部门管 如何对付菜鸟驿站不送货? 菜鸟驿站的管理理念是什么 菜鸟驿站服务态度嚣张哪个部门能管理? 请问菜鸟驿站的营业时间是怎么定的? 菜鸟驿站怎么处理待CP认证 百度地图下载了离线地图后没有网络会不会导航? vivo 云服务收费吗 vivos5的云服务收费吗?