首页 > 试题广场 >

说一下动态内存分配

[问答题]
普通的变量创建都是放在栈区的,由系统管理,用完自动释放,而我们手动malloc或new的空间是放在堆区的,当我们用完要free和delete释放,防止内存泄漏。这也就是在有一点,内存分为栈区,堆区,常量区,静态区,和代码区。
发表于 2019-01-16 23:21:25 回复(0)
所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
发表于 2019-01-06 19:44:19 回复(0)
在c/ c++中,动态内存分配与静态内存分配不同,静态内存是指栈以及静态储存区,是由系统分配的内存。动态内存分配一般指的是堆,一般用malloc函数进行分配,分配的大小有程序员自己定义,若使用完以后,必须使用free函数进行内存回收,否则会造成内存泄漏。
发表于 2019-01-07 21:44:29 回复(0)
在c/ c++中,动态内存分配与静态内存分配不同,
  • 静态内存是指栈以及静态储存区,是由系统分配的内存。
  • 动态内存分配一般指的是堆,一般用malloc函数进行分配,分配的大小有程序员自己定义,若使用完以后,必须使用free函数进行内存回收,否则会造成内存泄漏。
  • c中主要是malloc,calloc,realloc,还有free,c++中是new,delete;
发表于 2020-08-16 11:21:09 回复(0)

静态内存分配发生在栈,静态存储区,由系统实现,预分配大小;动态内存分配发生在堆区,由关键字new/delete,或者库函数malloc/free实现,即时大小,基于类型进行。


发表于 2019-04-16 10:57:23 回复(0)
动态内存分配是指程序在堆上去申请相应的内存,并且其内存的大小由程序员自己给定,通常使用的函数为malloc函数,在C++中,我们常使用new函数进行申请内存,但其实new底层依旧调用malloc函数,并且我们不需要去判定new是否正确申请内存,因为new函数使用了异常,当申请失败时,将会调用throw出异常错误。
发表于 2020-12-15 20:11:07 回复(0)

问题1、所谓的静态分配的内存(也就是栈区),其何时自动回收?是出了作用域就自动回收,还是进程结束释放;2、堆区是否只能主动申请,如果栈区满了,堆区的空间会被用于栈吗?

发表于 2019-05-23 08:33:09 回复(0)
所谓动态内存分配,就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。
发表于 2019-05-03 21:18:51 回复(0)
在堆上申请,需要手动释放,
发表于 2019-03-11 07:39:30 回复(0)
放在堆中,需要手动释放
发表于 2019-03-06 09:54:17 回复(0)
,,,
发表于 2019-01-06 14:55:15 回复(0)