游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8100|回复: 11

堆栈是一中数据结构还是两种?堆内存和栈内存是在什么

[复制链接]

18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-10-30 10:48:00 | 显示全部楼层 |阅读模式
不怕大家见笑,我写了不少程序了,但现在最重要的低层数据结构堆栈到现在还晕着,翻了不少书都写了四个大字“后进先出”,希望高手指点一二。

第一,
常看到说堆栈是一种后进先出的数据结构等等。但也看到过说堆是什么结构,栈是什么结构。到底堆栈是一种数据结构?还是堆和栈各是各的,是两种数据结构?

=====================================
第二,
在实际的C++编程中,

直接定义的是栈内存,比如 CDX dx; 在栈内存上为类CDX的对象dx分配内存。
动态分配的是堆内存,比如 CDX* dx = new CDX();

那堆内存是VC++.net编译器在编译程序的时候建立的,栈内存是程序运行起来的时候系统建立的,这样想对吗?我电脑的内存是富豪牌的512M内存,在生产车间生产内存的时候就规定了哪块内存作为堆内存,哪块内存作为栈内存了吗?

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-30 11:10:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

堆内存是由操作系统函数分配的,win下面就是HeapAlloc(好像是吧。。。),然后由CRT负责使用,你new都是在里面生成的,而生成堆就是普通的内存分配,所谓分配,就是由操作系统管理的内存给一块出来给应用程序。

栈其实和堆差不多,只不过它是由CRT直接管理的内存,而且遵循一定的法则,由ESP和EBP两个寄存器负责指向,你使用栈的时候,就是针对EBP和ESP进行查询操作,Push,Pop,Call,Ret这样的汇编指令,也是针对ESP和EBP进行操作的。所以实际上你可以用自己分配的内存作为栈来使用,只是到时候要记住将你分配的内存释放就是了。

我零零散散讲了一堆废话。。。。不知道你明不明白。。。

14

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-11-1 10:59:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

汗,一上来全都是暴强的贴子,都研究到这个阶段了,我还只是用D3D做点小小的片断,惭愧啊!

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-11-1 12:08:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

都开始研究D3D了,应该已经过了这个阶段了,呵呵

14

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-11-1 17:11:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

都开始研究D3D了,应该已经过了这个阶段了,呵呵

--------------------------------------------------------------------------

不是啊!我对这个根本一点不了解的,D3D也是简单的做做,我觉的这个比D3D更难啊!

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2005-12-1 17:57:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

太高深了,用不着那么底层吧,知道同样是内存,能存数就得了。哈

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-12-1 19:23:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

有的时候就有用了。。。

10

主题

40

帖子

42

积分

注册会员

Rank: 2

积分
42
发表于 2005-12-2 09:09:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

对于一个真正的程序员,这是基础。因此我不是真正的程序员,me just coder

13

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2005-12-2 22:11:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

这些都是编译器做的工作吧

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-12-3 14:50:00 | 显示全部楼层

Re:堆栈是一中数据结构还是两种?堆内存和栈内存是在什

作为一个程序员这个东西还是要了解滴,
有些东西是要放在堆内存中,
有些东西是要放在栈内存中滴,
不能乱放滴,
乱放滴话,
操作系统就会很生气,
后果就会很严重滴~~^o^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 20:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表