malloc函数分配的内存空间有名字吗

 我来答
CodeBlove
2014-05-26 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:245万
展开全部
本质上所有内存空间都不存在名字的,内存空间只有地址。而所谓变量名称(任何名称)只存在于源代码中,程序一旦编译成机器语言,也就是二进制码,变量名称将被内存地址所取代。

而从源代码角度看,准确的说malloc不存在名字,普通变量和指针变量有名字。

当定义一个变量时,先分配一块该类型所规定长度的内存空间(比如int类型是4字节),然后将该空间首地址与变量名绑定起来(变量表),当程序中其他地方使用该变量名的时候,编译器根据变量表取得该变量地址,进而进行相关访问,这叫直接访问,在机器语言层面叫直接寻址。

malloc是一个通用的内存分配函数,因为是通用函数,所以也不在乎分配的内存空间存放什么类型的数据,参数只要给定内存长度即可,所以返回的是一个虚指针(实际上只是个无类型的地址值,说它虚指针只是一个习惯)。但是要操作这块内存空间需要通过确切的指针变量访问,因此必须将返回的虚指针强制转换成指定的类型,并赋值给一个指针变量,假设定义了指针p。和上面一样,定义p的时候也需要分配一块内存空间,将该空间与变量名p在变量表中绑定起来,然后将malloc返回的地址存入p的地址空间中。在访问时,编译器根据变量表取得p的地址,从p的地址中取得之前存放的malloc返回的地址,再根据该地址对数据访问,这叫间接访问(间接寻址)。

最后要说明一点的是,指针和地址的区别,指针是一个存放地址的变量,本身具有内存空间,也就是说指针本身也有地址,而地址就是个值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄先生
2024-12-27 广告
矩阵切换器就是将一路或多路视音频信号分别传输给一个或者多个显示设备,如两台电脑主机要共用一个显示器,矩阵切换器可以将两台电脑主机上的内容renyi切换到同一个或多个显示器上;迈拓维矩矩阵切换器种类齐全,性价比高,支持多种控制方式,为工程商采... 点击进入详情页
本回答由黄先生提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式