鱼C论坛

 找回密码
 立即注册
查看: 2470|回复: 5

[已解决]关于C语言动态分配内存的两个问题

[复制链接]
发表于 2021-4-6 18:38:24 | 显示全部楼层 |阅读模式
20鱼币
C语言求教......
1. realloc前面一定要使用malloc吗?
2. malloc申请出来的数组,如何求它的长度。
        例如:int *a = (int *) malloc(5*sizeof(int));
        使用类似于求静态数组长度的 sizeof(a)/sizeof(a[0]) 不适用了,那么有没有好的方法能够求出该数组的长度?
最佳答案
2021-4-6 18:38:25
King丨小义 发表于 2021-4-7 13:54
第一个问题的答案的确是可以,realloc在使用时通过控制参数可以达到malloc和free的效果。
第二个问题是 ...

没有其他方式,需要自己创建变量保存

最佳答案

查看完整内容

没有其他方式,需要自己创建变量保存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-6 18:38:25 | 显示全部楼层    本楼为最佳答案   
King丨小义 发表于 2021-4-7 13:54
第一个问题的答案的确是可以,realloc在使用时通过控制参数可以达到malloc和free的效果。
第二个问题是 ...

没有其他方式,需要自己创建变量保存

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
King丨小义 + 2 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-6 22:06:57 | 显示全部楼层
1、不一定。比如说int array[5] 和 int *array = (int *)malloc(5 * sizeof(int))使用后都可以调用remalloc
2、这个问题问的。。。动态分配内存空间本来就是用户给一个长度,然后用户又想求这个长度,这不是多此一举吗?

评分

参与人数 1荣誉 +2 鱼币 +5 贡献 +2 收起 理由
King丨小义 + 2 + 5 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-7 09:14:51 | 显示全部楼层
不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-7 13:54:50 From FishC Mobile | 显示全部楼层
巴巴鲁 发表于 2021-4-6 22:06
1、不一定。比如说int array[5] 和 int *array = (int *)malloc(5 * sizeof(int))使用后都可以调用remalloc ...

第一个问题的答案的确是可以,realloc在使用时通过控制参数可以达到malloc和free的效果。
第二个问题是这样的,我现在程序中realloc是由回调函数调用的,我并不知道它当前的长度,只知道我应该让它的长度加一。如果不通过额外创建一个变量保存的方式,有没有其他方式可以获得该动态数组的长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-7 15:50:43 | 显示全部楼层
第一题:realloc(ptr,size)如果当ptr == null 时,就是当做malloc(size)用的

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
King丨小义 + 2 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 19:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表