King丨小义 发表于 2021-4-6 18:38:24

关于C语言动态分配内存的两个问题

C语言求教......
1. realloc前面一定要使用malloc吗?
2. malloc申请出来的数组,如何求它的长度。
        例如:int *a = (int *) malloc(5*sizeof(int));
        使用类似于求静态数组长度的 sizeof(a)/sizeof(a) 不适用了,那么有没有好的方法能够求出该数组的长度?

人造人 发表于 2021-4-6 18:38:25

King丨小义 发表于 2021-4-7 13:54
第一个问题的答案的确是可以,realloc在使用时通过控制参数可以达到malloc和free的效果。
第二个问题是 ...

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

巴巴鲁 发表于 2021-4-6 22:06:57

1、不一定。比如说int array 和 int *array = (int *)malloc(5 * sizeof(int))使用后都可以调用remalloc
2、这个问题问的。。。动态分配内存空间本来就是用户给一个长度,然后用户又想求这个长度,这不是多此一举吗?

bool想学C 发表于 2021-4-7 09:14:51

不会

King丨小义 发表于 2021-4-7 13:54:50

巴巴鲁 发表于 2021-4-6 22:06
1、不一定。比如说int array 和 int *array = (int *)malloc(5 * sizeof(int))使用后都可以调用remalloc ...

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

学C的大叔 发表于 2021-4-7 15:50:43

第一题:realloc(ptr,size)如果当ptr == null 时,就是当做malloc(size)用的
页: [1]
查看完整版本: 关于C语言动态分配内存的两个问题