永发信息网

为什么用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 *)是类型强制转换.
全部回答
  • 1楼网友:一袍清酒付
  • 2021-03-07 07:08
第一个共占10字节,只能放2个int元素还多2字节 第二个能放10个 10*sizeof(int)和40,在32位系统下是一样的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯