C语言malloc问题
本文介绍了C语言malloc问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在Cpp reference上看到动态内存分配,p2和p3的代码应该怎么理解?,sizeof(int[4])是什么意思?
include <stdio.h>
include <stdlib.h>
int main(void)
{
int *p1 = malloc(4*sizeof(int)); // allocates enough for an array of 4 int
int *p2 = malloc(sizeof(int[4])); // same, naming the type directly
int *p3 = malloc(4*sizeof *p3); // same, without repeating the type name
if(p1) {
for(int n=0; n<4; ++n) // populate the array
p1[n] = n*n;
for(int n=0; n<4; ++n) // print it back out
printf("p1[%d] == %d\n", n, p1[n]);
}
free(p1);
free(p2);
free(p3);
}
解决方案
sizeof(int)是代表int的占用的字节数是4个字节,然后再根据外面的4*4个字节就是16个字节
sizeof(int[4]),先看int[4]是代表分配一个连续的int类型的长度为4的存储单元,也就是说4*sizeof(int)大小,和第一个是一样的效果。
sizeof(4sizeof p3)后面的p3会被推算出是int类型所以是4个字节44字节=16字节。
这篇关于C语言malloc问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文