使用c正确获取使用malloc创建的整数数组的大小

标签 c

<分区>

我使用以下代码行使用 malloc 创建了一个数组:

 int* array = (int*)malloc(12*sizeof(int));

我尝试通过以下方式获取尺寸:

int size = sizeof(array)/sizeof(int);

但是这会返回 2,而不是 12(我知道 sizeof(array[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)

关于使用c正确获取使用malloc创建的整数数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26657622/

相关文章:

c++ - 将 namespace 添加到具有 C header 的 C++ 实现

C语言将char类型 '0' -'9'转换成int类型打印到stdout

c - 嵌套 for/while 循环和数组,过滤掉数组中的数字

c - 绕过 gdb 中的 ptrace

c - fork /管道/dup2 问题 : child process never exits

c - C 中更快的不等式

c - 在优化构建时,调试信息是否会从库中删除?

c - 如何在C语言中的另一个函数中使用一个函数中的一个变量

c - 如何从不同的函数初始化 char**?

将数字字符串转换为整数值