为什么用malloc分配内存用int系统不就可以自动分配么
答案:2 悬赏:80 手机版
解决时间 2021-03-07 09:14
- 提问者网友:低吟詩仙的傷
- 2021-03-07 05:34
还用malloc(sizeof(int));;sizeof后面跟的可以直接是大小还能是别的东西比如struct student后面是这个怎么分配的内存啊。不是结构组不分配内存的么那malloc怎么开辟内存啊用什么判断。。
最佳答案
- 五星知识达人网友:逐風
- 2021-03-07 05:56
int i,声明对象,实际上也告诉编译器,你需要sizeof(int)的内存空间,这个是没问题的,但如果你要分配10个sizeof(int)长度的内存空间,就只能用数组了,比如int data[10].再如果你也不知道要一次分配多少个sizeof(int)长度,就是长度是动态的就只能用malloc( n* sizeof(int))了,这个跟C++的动态数组new int[n],是一个道理.
sizeof后面跟的是类型呀,获取类型所占的字节数,当你声明一个结构体后,实际上可以把它认为一个新的类型(谁说结构体不分配内存???),所以也可能分配n个结构体字节长度的内存:
struct student *stus = (struct student *)malloc( n* sizeof(struct student)).
前面的 (struct student *)是类型强制转换.
sizeof后面跟的是类型呀,获取类型所占的字节数,当你声明一个结构体后,实际上可以把它认为一个新的类型(谁说结构体不分配内存???),所以也可能分配n个结构体字节长度的内存:
struct student *stus = (struct student *)malloc( n* sizeof(struct student)).
前面的 (struct student *)是类型强制转换.
全部回答
- 1楼网友:一袍清酒付
- 2021-03-07 07:08
第一个共占10字节,只能放2个int元素还多2字节
第二个能放10个
10*sizeof(int)和40,在32位系统下是一样的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |