使用c正确获取使用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 有

我使用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

有人能告诉我我做错了什么吗/ 如何在c中获得使用malloc初始化的数组的大小

对不起,如果这是基本的,我环顾四周,找不到答案

谢谢你抽出时间

int *arr = malloc(sizeof(int));
无需强制转换malloc()。
arr
是指针,因此在第一种情况下,您使用

sizeof(arr)
它给出指针的大小,而不是数组的大小

在第二种情况下,您有一个数组

int arr[12];
这里可以得到数组的大小
arr
,它是

sizeof(arr)/sizeof(int)

。第一个
数组
不是数组,而是指向
int
类型元素的指针。第二个是!很可能有重复的地方,但一般的答案是
sizeof(数组)
在第一种情况下,给出的是指针的大小,而不是数组的大小;无法仅从指针确定数组的大小。