为什么要使用动态内存分配函数malloc,怎样使用malloc函数?

2024-11-28 19:04:11
推荐回答(3个)
回答(1):

动态内存分配,可以自由的分配指定大小的内存空间。当程序运行时,程序员并不清楚某一数据需要的具体内存空间大小时,可以使用动态分配。
malloc函数原型
void *malloc(int nSize)
分配一个nSize大小的内存空间,如果分配成功则返回地址空间的首地址,如果分配失败则返货NULL
nSize一般使用 sizeof(类型A)*N 的计算方式获取大小。意思为:为分配n个类型A所占空间的大小。
获取的指针地址需要强制转换为指定类型
例如:int *p = (int*)malloc(sizeof(int)*100);
使用malloc动态分配的内存空间需要使用free函数手动释放。

回答(2):

动态内存分配就是在程序运行的时候去分配内存,而不是在程序运行之前就确定好了的。比如,现在要做一个程序,一个班学生的成绩,由于事先并不知道这个班到底有多少个学生,所以在运行的时候会先询问有多少学生,然后再分配相应大小的空间来存储这些成绩。当然,为了简便,你也可以事先假设一个足够大的数,比如1000,然后在程序运行前就分配好1000个成绩的空间,这就不需要动态内存分配了,但有时这样会很浪费内在空间。

回答(3):

动态去分配内存是为了不浪费内存!比如楼上说的一个班有多少学生?如果在开学的时候定死了中途转入的怎么办? 如果你一次性定义1000这样一个班再怎么都用不到那么多!但是如果你定义一个变量例如你说的那个宏! 来接受你有多少个学生 然后求出然后再开辟多少内存,班上的学生减少和增加那个宏也会跟着减小和增大这样就可以达到资源利用最优的效果! 当然动态开辟的内存要free();释放掉否则你一直占着这个内存你的内存会被耗尽。后果不用我说了!