如题。
longshort 回复于:2006-12-26 10:11:05
有测试数据支持么?
pinecrane 回复于:2006-12-26 10:13:28
底层的物理机制不同.
jack9981 回复于:2006-12-26 10:26:59
引用:原帖由 pinecrane 于 2006-12-26 10:13 发表
底层的物理机制不同.
??
能解释一下吗?
net_robber 回复于:2006-12-26 10:36:40
will LZ tell us, where did you see this??
Benson_linux 回复于:2006-12-26 10:43:16
估计是在堆上分配空间的时候需要做一些移动。
gvim 回复于:2006-12-26 11:41:54
堆空间的开辟需要用系统函数,栈上直接修改指针
堆空间的管理需要系统记帐,栈上的空间可以由编译器管理或是保存在某个处理器寄存器中。
堆空间的释放需要系统管理,栈上的释放可以直接丢弃
......
wolf0403 回复于:2006-12-26 12:18:50
堆空间需要通过栈上的指针间接引用,所以访问会慢。
至于分配,大约 gvim 都讲到了。
Benson_linux 回复于:2006-12-26 12:30:52
学习了。
xb_parasite 回复于:2006-12-26 18:26:44
学习了。谢谢。
crspo 回复于:2006-12-26 23:28:53
lz实在问alloca()和malloc()的速度差别吗?
pineapple1175 回复于:2006-12-26 23:47:50
记得在apue2上面看到关于线程中有这样一段话,大致意思是,一个线程有自己的堆栈,可以在堆栈上分配内存,比如说一个结构体,如果这个线程调用了pthread_exit()返回这个结构体指针的时候之后要特别的小心,因为很有可能这个结构体里面的成员值发生改变,这个可以理解,因为同一个进程所有线程的资源是共享的,当这个线程退出之后那部分以前用过的堆栈很可能被其它线程占用,但同时又说如果malloc就不会出现这样的问题,我有一点不太不明白的是:malloc申请的资源和线程在堆栈中申请的资源为什么会不一样?
boxpei 回复于:2006-12-27 08:31:10
好好看书,堆和栈的区别。
Benson_linux 回复于:2006-12-27 09:52:43
引用:原帖由 pineapple1175 于 2006-12-26 23:47 发表
记得在apue2上面看到关于线程中有这样一段话,大致意思是,一个线程有自己的堆栈,可以在堆栈上分配内存,比如说一个结构体,如果这个线程调用了pthread_exit()返回这个结构体指针的时候之后要特别的小心,因为很有可能 ...
同问,希望高手解释一下。
jronald 回复于:2006-12-27 10:00:50
比如,在栈上分一个int,只要esp-4就可以了,
在堆上系统要记录被分配内存的信息,以便释放
BTW:
栈有序
堆无序
ilovejuner 回复于:2007-06-21 08:20:20
怎么没有再继续下去了?
flw2 回复于:2007-06-21 08:57:11
还用继续吗?
gvim的帖子
|