跨平台系统栈的增长方向判断
来源:互联网 发布:java多线程 volatile 编辑:程序博客网 时间:2024/05/07 01:29
对于一个用惯了i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。C是一个不错的选择。那接下来的问题就是如何用
C在哪里会用到栈呢?稍微了解一点
等一下,怎么比较两个变量的地址呢?“先声明的先入栈
那就函数加个参数,比较参数和局部变量的位置,参数肯定先入栈。那为什么不能局部变量先入栈?第一反应是怎么可能,但仔细想来又没有什么不可以。所以,这种方法也依赖于编译器的实现。
不妨回想一下,函数如何调用。执行一个函数时,这个函数的相关信息都会出现栈之中,比如参数、返回地址和局部变量。当它调用另一个函数时,在它栈信息保持不变的情况下,会把它调用那个函数的信息放到栈中。
比如,设计两个函数,一个作为调用方,另一个作为被调用方。被调用方以一个地址(也就是指针)作为自己的入口参数,调用方传入的地址是自己的一个局部变量的地址,然后,被调用方比较这个地址和自己的一个局部变量地址,由此确定栈的增长方向。
好了,既然有了这个了解,显然可以扩展一下前面的解决方案,可以两个栈帧内任意的东西进行比较,比如,各自的入口参数,都可以确定栈的增长方向。
int func1();
int func(){
int a =1;
cout << &a << endl;
func1();
return 0;
}
int func1(){
int b =2;
cout << &b << endl;
return 0;
}
同学说过操作系统中“栈从上向下增长,堆从下向上增长;栈的地址减小,堆的地址增加”;在网上也看到过这样的说法,现在验证一下看来在windowxp和visual studio2008下是正确的。
- 跨平台系统栈的增长方向判断
- 系统栈的增长方向判断
- 判断栈的增长方向
- 判断栈的增长方向
- 判断栈的增长方向
- 判断栈增长方向
- 如何判断栈的增长方向?
- 如何判断一个栈的增长方向
- 如何判断栈的增长方向?
- 判断栈的增长方向(转)
- 如何判断栈的增长方向
- 如何判断栈的增长方向?
- 栈的增长方向判断方法
- 如何判断栈的增长方向?
- 如何判断栈的增长方向?
- 如何判断栈、堆的增长方向?
- 如何判断系统栈的增长方向(stack growth direction)
- 栈的增长方向
- 使用public key的方式登陆linux操作系统
- ActiveMQ 5.10.0 安装与配置 window 64bit
- Codeforces 466 A. Cheap Travel
- Line: 230 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:230:-1
- C#串口通信总结
- 跨平台系统栈的增长方向判断
- HDU1429胜利大逃亡(续)BFS+状态压缩
- 用构造函数计算不同立方体的体积
- The connection to adb is down, and a severe error has occured. 解决方法汇总和自创方法
- Codeforces 466 B. Wonder Room
- UNP卷1:第三章(套接字编程简介)
- 笔试总结3
- Implementing Inclusion Property with SimpleScalar
- Linux服务器性能评估与优化(二)