首页 > 试题广场 >

malloc函数进行动态、静态内存分配是在什么阶段?

[不定项选择题]
malloc函数进行动态、静态内存分配是在什么阶段?
  • 编译阶段
  • 链接阶段
  • 装载阶段
  • 执行阶段
啥头像
涉及到内存分配,就得等到运行阶段啊,不运行分配内存没什么用啊
发表于 2016-04-21 09:26:35 回复(4)

程序占用三种类型的内存:静态内存、栈内存、堆内存; 
静态内存: 
用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量 
栈内存: 

用来保存定义在函数内的非static对象。
分配在静态内存或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,在程序结束时销毁。
堆内存: 
在程序运行时分配。动态对象的生存周期由程序(用户)来控制。
发表于 2017-03-04 09:43:19 回复(0)
为什么我答完之后再看就不是同一个题目了???

mallocd 在堆上动态分配内存,在运行时期
编辑于 2015-06-16 22:09:12 回复(0)
可联系动态内存分配 int * p = (int *)malloc(sizeof(int));可知是在运行期分配
发表于 2015-09-04 16:37:17 回复(0)
内存分配分为动态内存分配和静态内存分配,动态内存分配是在程序运行时分配内存,静态内存分配是在程序装入时分配内存
发表于 2018-04-24 21:03:26 回复(0)
只要是涉及到内存的,都是在执行的时候再确定执行。
发表于 2017-06-30 14:27:25 回复(0)
malloc函数进行动态、静态内存分配是在什么阶段?
这句话,我怎么感觉描述的有问题。malloc函数开辟的空间明明是动态内存分配,怎么可以做到静态内存分配。难道是接收返回值栈上的变量的分配在什么阶段吗?
int *p = (int*)malloc(sizeof(int)*SIZE);
这里描述的是p的变量分配空间,和malloc调用后分配的空间的分配阶段吗?malloc函数调用分配的空间叫做动态内存分配吧,栈上的变量分配的空间叫做静态内存分配吧。这里都没有描述清楚,很明显就是一个病句。
该题应该描述的是“接收malloc调用返回值的变量p分配空间,和malloc调用后分配的空间它们的内存分配阶段是什么阶段
那么就类似于理解静态数组和动态数组的内配:
静态数组 :静态定义的数组在程序加载的时候就已经分配了内存空间,直到函数结束或者程序结束后才会被释放; 
动态数组 :由malloc()或new()等函数定义的数组,在程序运行时才申请内存空间,使用完后可以借助free ()或delete ()手动释放。

发表于 2022-11-27 13:25:57 回复(0)

但是涉及到内存,都要等到执行阶段。厉害了,我的哥!

发表于 2018-06-25 15:17:16 回复(0)
注意:涉及要内存分配的地方,一般是在程序执行的时候才分配相应的空间,否则分配内存有什么用呢。注意理解。
发表于 2016-05-22 15:31:56 回复(0)
为什么不是装入阶段?动态运行时装入属于运行阶段?装入阶段是装入内存,你都装入内存了,怎么会还没分配内存?
编辑于 2018-05-18 12:34:33 回复(0)

程序占用三种类型的内存:静态内存、栈内存、堆内存; 
静态内存: 
用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量 
栈内存: 

用来保存定义在函数内的非static对象。
分配在静态内存或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,在程序结束时销毁。
堆内存: 
在程序运行时分配。动态对象的生存周期由程序(用户)来控制。
发表于 2022-05-15 14:33:06 回复(0)
不是执行阶段,分配内存没用,注意注意!!!
发表于 2021-04-02 10:14:20 回复(0)
标记
发表于 2018-03-12 23:44:57 回复(0)
可以联想动态数组的创建
发表于 2016-09-02 10:55:12 回复(0)
malloc是在程序运行的时候分配内存空间的
发表于 2015-09-19 20:21:16 回复(0)
D
发表于 2015-04-15 16:08:43 回复(0)