C语言高手进, 这个例子调用malloc函数到底想体现个什么 我用普通的方法也能实现他想达到的目的啊
发布网友
发布时间:2022-11-03 08:10
我来回答
共2个回答
热心网友
时间:2023-10-30 08:28
这个malloc就是可以实现不知道数组多大的时候,自己开辟一个这么大的数组.
你自己的程序确实是也实现了,但是有3个问题:
1,如果输入的len大于5,那么你的程序会有问题.
2,假设你觉得问题1不是问题,例如把数组a开辟的很大(如a[10000]等),那么,如果输入的len很小,例如只有5,那么剩下的那9995的内存就浪费了.
3.也许在main中是无法开辟a]10000]这么大的,因为栈内存有限.(这个和编译器和环境有关系),而堆空间的大小则要远大于栈空间,而malloc就是从堆空间分配的内存,所以可以开辟比较大的内存区域.
热心网友
时间:2023-10-30 08:28
malloc函数是用于动态分配内存的。
前头那段代码不需要a[5],没有用上的。你用多少内存,就开辟多少内存。将你要输入的个数存放到len中,在开辟len大小的内存,比较没有浪费。
而后头的代码中数组的大小是固定的,如你定义的a[5]。而你要存放的数的长度(即len值)则必须<5,多了会放不下,少了则实现开辟好的空间存在浪费。
两者的区别就在这里。希望对你有所帮助!^^