首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在内存储器区域中,栈和堆栈有区别吗

2012-07-30 
在内存区域中,栈和堆栈有区别吗在内存区域中,栈和堆栈有区别吗?如果不是相同的,他们各种又有什么特点呢[解

在内存区域中,栈和堆栈有区别吗
在内存区域中,栈和堆栈有区别吗?如果不是相同的,他们各种又有什么特点呢

[解决办法]
额。。原来是“栈”与“堆栈”,,这是同一个东西的两个叫法而已

我还以为是“堆”与“栈”、、、
[解决办法]
同1楼,目前公认的理解是“栈=堆栈”,但是堆和栈显然是两种东西。

至于堆和栈的区别,我自己的一点浅见,你可以在任何没有被占用的内存放一“堆”东西,将首地址放入DS,然后用偏移量访问,至于偏移多少,这个只能程序员自己计算,你想偏移多少就偏移多少。但是栈不同,如果要使用栈操作,那么栈指针必须放在ESP中,push、pop等栈操作指令会自动更改这个这个指针,当然,你也可以自己修改栈指针,反正CPU给了程序员最大的权限,最多就是死机了。栈操作有非常多的专用指令,所以栈非常重要。

楼主只是想了解C/C++吧,了解一些就可以了,这些细节编译器都做好了。在C语言中,函数中的局部变量就保存在堆栈中,在函数返回的时候,pop指令会移动栈指针,所以当再次使用push指令的时候,原先内存的数据就会被覆盖,这就是为什么书上告诉你,永远不要返回一个局部变量的原因。

热点排行