c - 在 C 中使用 Sizeof 和 malloc 函数

标签 c malloc sizeof

<分区>

我是C新手,

我的问题是下面的代码,

int Max[10],*New_Max;
int length=5;
New_Max=(int)malloc(sizeof(int)*length));
printf("sizeof(Max)=%d,sizeof(New_Max)=%d",sizeof(Max),sizeof(New_Max));`

输出:

sizeof(Max)=40,sizeof(New_Max)=4

我希望 sizeof(New_Max)20,但它打印为 4

谁能解释一下原因。

最佳答案

以下行将内存分配给 New_Max 指向的内容。

New_Max=(int)malloc(sizeof(int)*length));

并且,以下行获取有关指针大小的信息:

sizeof(New_Max)

所以,指针指向的大小和它自身的大小是两个不同的东西。这就是您将 New_Max 的大小设置为 4 的原因。

关于c - 在 C 中使用 Sizeof 和 malloc 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259936/

相关文章:

c++ - malloc 在 Linux 中挂起

c - 为什么当我将堆对象传递给函数时不需要释放它们?

c - 动态数组的大小不正确

C++ 派生多态类 - 它是否包含 Base 的整个实例,包括 vptr?

c++ - 当编译器决定填充结构时

c - 无法释放内存,显示某些内存崩溃

C:连接动态分配的字符串

malloc 失败会导致死锁或竞争条件吗?

检查是否设置或清除了多个位

c - 如何有条不紊地追踪源代码的位置