使用c正确获取使用malloc创建的整数数组的大小
我使用malloc创建了一个数组,代码如下:使用c正确获取使用malloc创建的整数数组的大小,c,C,我使用malloc创建了一个数组,代码如下: int* array = (int*)malloc(12*sizeof(int)); 我尝试通过以下方式获得尺寸: int size = sizeof(array)/sizeof(int); 但是,这将返回2,而不是12(我知道sizeof(数组[0]更一般) 令人困惑的是(对我来说),当我使用 int array[12] 上面的代码行返回正确的大小:12 此外,我能够用12个整数填充int*数组,而不存在分段错误,我不知道大小是否为2 有
int* array = (int*)malloc(12*sizeof(int));
我尝试通过以下方式获得尺寸:
int size = sizeof(array)/sizeof(int);
但是,这将返回2,而不是12(我知道sizeof(数组[0]更一般)
令人困惑的是(对我来说),当我使用
int array[12]
上面的代码行返回正确的大小:12
此外,我能够用12个整数填充int*数组,而不存在分段错误,我不知道大小是否为2
有人能告诉我我做错了什么吗/
如何在c中获得使用malloc初始化的数组的大小
对不起,如果这是基本的,我环顾四周,找不到答案
谢谢你抽出时间
int *arr = malloc(sizeof(int));
无需强制转换malloc()。
arr
是指针,因此在第一种情况下,您使用
sizeof(arr)
它给出指针的大小,而不是数组的大小
在第二种情况下,您有一个数组
int arr[12];
这里可以得到数组的大小arr
,它是
sizeof(arr)/sizeof(int)
。第一个
数组
不是数组,而是指向int
类型元素的指针。第二个是!很可能有重复的地方,但一般的答案是sizeof(数组)
在第一种情况下,给出的是指针的大小,而不是数组的大小;无法仅从指针确定数组的大小。