t**g 发帖数: 1164 | 1 一道面试题
What is the difference between stack, static heap and dynamic heap?
我明白stack/heap的区别
可是啥叫static heap/dynamic heap?? |
s******9 发帖数: 84 | 2 基于数组的Heap是Static的,因为容量无法扩展。基于树的Heap是dynamic的。 |
w*********l 发帖数: 1337 | 3 这题比较confusing。这说的应该不是进程空间里的stack和heap,是stack和heap数据
结构。
【在 t**g 的大作中提到】 : 一道面试题 : What is the difference between stack, static heap and dynamic heap? : 我明白stack/heap的区别 : 可是啥叫static heap/dynamic heap??
|
y**i 发帖数: 1112 | 4 那能讲讲他们的用途么?new的内存是哪种以及另一种的用途? |
s********a 发帖数: 1447 | 5 heap不都是用malloc等分配的嘛
怎么还基于数组或者树呢?
【在 s******9 的大作中提到】 : 基于数组的Heap是Static的,因为容量无法扩展。基于树的Heap是dynamic的。
|
y**i 发帖数: 1112 | 6 heap数据结构不是用数组实现的么?在这种情况下,不是数组和树有个对应关系么?
【在 w*********l 的大作中提到】 : 这题比较confusing。这说的应该不是进程空间里的stack和heap,是stack和heap数据 : 结构。
|
a********1 发帖数: 750 | 7 heap只是优先队列的数据结构,怎么实现可以自己去实现,比如fibonacci heap 通常
就不用数组
【在 y**i 的大作中提到】 : heap数据结构不是用数组实现的么?在这种情况下,不是数组和树有个对应关系么?
|
s********a 发帖数: 1447 | 8 你是说
static heap和dynamic heap是分配了heap后 自己用数据结构实现的?
static heap用数组实现 dyanmic heap用树实现?
【在 a********1 的大作中提到】 : heap只是优先队列的数据结构,怎么实现可以自己去实现,比如fibonacci heap 通常 : 就不用数组
|
y**i 发帖数: 1112 | 9 此heap非彼heap
【在 s********a 的大作中提到】 : 你是说 : static heap和dynamic heap是分配了heap后 自己用数据结构实现的? : static heap用数组实现 dyanmic heap用树实现?
|
s********a 发帖数: 1447 | 10 哦 知道了~呵呵
【在 y**i 的大作中提到】 : 此heap非彼heap
|
|
|
t**g 发帖数: 1164 | 11 这里的heap其实已经超越了C++本身范畴把?
int *a=new int[100] //这里是static heap?
能举一个用dynamic heap的C++代码语句么?
【在 s******9 的大作中提到】 : 基于数组的Heap是Static的,因为容量无法扩展。基于树的Heap是dynamic的。
|
H*X 发帖数: 281 | 12
你说的heap,和lz帖子里的heap,不是一个东西吧, lz是在讨论memory allocation
【在 a********1 的大作中提到】 : heap只是优先队列的数据结构,怎么实现可以自己去实现,比如fibonacci heap 通常 : 就不用数组
|
H*X 发帖数: 281 | 13
我觉得是在问程序在内存里空间的占用吧
static heap或许是指static variables declared inside a function
然后dynamic 指普通malloc来的空间吧
【在 t**g 的大作中提到】 : 一道面试题 : What is the difference between stack, static heap and dynamic heap? : 我明白stack/heap的区别 : 可是啥叫static heap/dynamic heap??
|
w*********l 发帖数: 1337 | 14 是。但是你真搞一个动态二叉树也没错。
【在 y**i 的大作中提到】 : heap数据结构不是用数组实现的么?在这种情况下,不是数组和树有个对应关系么?
|
y**i 发帖数: 1112 | 15 我也不知道楼主的问题指的是什么,不过且不说这个,static变量不是被分配在全局区
/静态区么,heap区不是说是需要程序员自己释放空间,全局区会在程序结束时自动释
放么
【在 H*X 的大作中提到】 : : 我觉得是在问程序在内存里空间的占用吧 : static heap或许是指static variables declared inside a function : 然后dynamic 指普通malloc来的空间吧
|
w*********l 发帖数: 1337 | 16 那样的话heap根本不可能是dynamic的。都是固定地址空间。是heap就要被malloc (或
者衍生的C++的new等等)。
你说的这个static variables其实跟global一样,是在bss(block started by symbol)
,跟heap一点儿关系都没有。
【在 H*X 的大作中提到】 : : 我觉得是在问程序在内存里空间的占用吧 : static heap或许是指static variables declared inside a function : 然后dynamic 指普通malloc来的空间吧
|
w*********l 发帖数: 1337 | 17 说得基本没错。但是heap在程序死亡的时候也会被释放。所有进程占用的资源都会被释
放。memory leak不是因为heap不释放,是因为usage会一直增长不降。static空间根本
不会增长,所以也不用担心释放的问题。
【在 y**i 的大作中提到】 : 我也不知道楼主的问题指的是什么,不过且不说这个,static变量不是被分配在全局区 : /静态区么,heap区不是说是需要程序员自己释放空间,全局区会在程序结束时自动释 : 放么
|
H*X 发帖数: 281 | 18 所以我意思说, 一个是在data seg里,一个是在heap上,就可以算为2种空间了,否则我也
不太明白,heap还能怎么分
【在 y**i 的大作中提到】 : 我也不知道楼主的问题指的是什么,不过且不说这个,static变量不是被分配在全局区 : /静态区么,heap区不是说是需要程序员自己释放空间,全局区会在程序结束时自动释 : 放么
|
y**i 发帖数: 1112 | 19
~~~~~~~~~~~我怎么记得这个的原因是因为操作系统去做了这
件事,但从程序员和编译器的角度,并没有人去做?
~~~~~~~你这个的意思是在一个无限循环里分配
内存?
【在 w*********l 的大作中提到】 : 说得基本没错。但是heap在程序死亡的时候也会被释放。所有进程占用的资源都会被释 : 放。memory leak不是因为heap不释放,是因为usage会一直增长不降。static空间根本 : 不会增长,所以也不用担心释放的问题。
|
w*********l 发帖数: 1337 | 20 我的意思是,如果你的程序只执行一次malloc(4 GB),然后再也不malloc了,那不free
也没关系。进程没了一切都没了,否则OS就bug了。
【在 y**i 的大作中提到】 : : ~~~~~~~~~~~我怎么记得这个的原因是因为操作系统去做了这 : 件事,但从程序员和编译器的角度,并没有人去做? : ~~~~~~~你这个的意思是在一个无限循环里分配 : 内存?
|
|
|
y**i 发帖数: 1112 | 21 OS是可以做,但程序员也不能就等着OS做,还是要自己养成良好的习惯
free
【在 w*********l 的大作中提到】 : 我的意思是,如果你的程序只执行一次malloc(4 GB),然后再也不malloc了,那不free : 也没关系。进程没了一切都没了,否则OS就bug了。
|
w*********l 发帖数: 1337 | 22 ...
我的整个的point就是你说区别是静态区被OS回收是不对的。。。
【在 y**i 的大作中提到】 : OS是可以做,但程序员也不能就等着OS做,还是要自己养成良好的习惯 : : free
|
n***r 发帖数: 105 | 23 一般来说没有static heap这种说法。不是说data segment吧?
能google出来的就这些了。似乎某些程序会预先跟OS reserve some static memory
heap。
To ensure predictable performance, Flash Lite reserves a fixed-sized chunk
of memory from the operating system (OS) to create what is called a static
memory heap. This memory is reserved when the player starts up and the size
is defined by the device manufacturer.
The OS (based on design by the manufacturer) can optionally provide the
player with additional memory called dynamic memory heap. Flas
【在 t**g 的大作中提到】 : 一道面试题 : What is the difference between stack, static heap and dynamic heap? : 我明白stack/heap的区别 : 可是啥叫static heap/dynamic heap??
|
n***r 发帖数: 105 | 24 static variable是store在data segment里面的
【在 H*X 的大作中提到】 : 所以我意思说, 一个是在data seg里,一个是在heap上,就可以算为2种空间了,否则我也 : 不太明白,heap还能怎么分
|