为什么要使用 malloc()是动态内存分配函数?

2019-07-16 07:55发布

1、相对于自动分配内存,malloc()函数申请分配的内存地址有什么不同?比如:
int x[100]
int * x = (int *)malloc(100 *sizeof(int))
二者之间的内存地址有什么区别?求教,谢谢


2、C语言什么情况下需要用malloc来申请内存?求教,谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
18842697583
2019-07-16 16:05
自己的理解,供题主参考:
1、int x[] ,分配给x的内存空间是不可变的,大小不可变,也不能删除,要想删除只能改程序重新编译。
     malloc(sizeof(x)),   系统分配的这个内存空间大小可变,不用的时候回收。
2、用处:1的对比可以看到,malloc 和 动态的,灵活的。可变的 相关。
     我们可以假设这样一个例子,你的程序中 x[ ] 用来存储 你仓库中的零件,元素是零件种类 type。
     a.用int x[100],type只能有100种,等你有800种零件的时候怎么办?改程序,把100改成800.
        那你说,我开始就让 type 是1000。行是行,浪费资源。假设你只有有限的ram,你就要吝啬一些。
     b. 用malloc(sizeof(*x)), 这种情况下你就不用预先设置type的上限值了。你type是多少,都能保证,x能分配到合适的内
        存空间。  (实际上  int x[100] 也是做分配内存的操作对吧)
    说的不严谨的地方还请指正。

一周热门 更多>