局部变量,全局变量?探寻程序上面的栈(STACK)空间的最大值!
2008-06-08 14:48
281 查看
近日看到有一些与程序、内存的的资料,比较有意思。能够体现全局数据与局部变量的内存关系,我在Cygwin上面跑出来的结果是STACK 的空间只有2M,用完后程序就停止执行了,源代码如下:
在Cygwin中用gcc编译为Win32程序:
执行结果摘录如下:
filename : DepleteStackSize.c |
#include static long STACK_BLOCK_HEADER; void depleteStackSpace() { // declare local variable for booking some STACK spaces. int intVarInStackSpace = 0; // output the memory offset printf("%3.1fM/n", (STACK_BLOCK_HEADER - (long)(&intVarInStackSpace)*1.0)/(1024*1024)); // self recursive depleteStackSpace(); } int main() { // the first local variable in application memory. int intVarInStackSpace = 0; // get first local variable address as the STACK block header STACK_BLOCK_HEADER = (long)(&intVarInStackSpace); // perform depletion depleteStackSpace(); // out the normal exit message printf("normal exit./n"); } |
[root@sharkwang Temp] # gcc -mno-cygwin -o DepleteStackSize.exe DepleteStackSize.c |
2.0M 2.0M 2.0M <--- %3.1f格式化后都四舍五入了,所以1.5xxM以上都变成2.0M了 2.0M 2.0M 2.0M 2.0M 2.0M <--- 到最大空间后程序就停止了,没有看到Normal Exit的输出... [root@sharkwang Temp] # |
相关文章推荐
- 局部变量,全局变量?探寻程序上面的栈(STACK)空间的最大值
- 局部变量,全局变量?探寻程序上面的栈(STACK)空间的最大值!
- 局部变量,全局变量?探寻程序上面的栈(STACK)空间的最大值!
- 局部变量,全局变量?探寻程序上面的栈(STACK)空间的最大值!
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)(转)
- heap stack 堆栈 全局变量 静态变量 进程空间 内存分配
- 程序的局部变量 全局变量 动态申请数据分别存储在什么地方
- 程序代码,常量,局部变量,全局变量在内存中的保存位置
- 关于局部变量,全局变量,作用域,生命期的概念,程序内存分析
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- 全局变量,静态局部变量,局部变量空间的堆分配和栈分配
- STM32全局变量占用程序存储空间吗?
- STM32全局变量占用程序存储空间吗?
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- 程序的局部变量 全局变量 动态申请数据分别存储在什么地方?
- 程序代码,常量,局部变量,全局变量,在内存中的储存位置
- 程序代码,常量,局部变量,全局变量在内存中的保存位置
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- (本程序功能:字符串A中找出包含字符串B中所有字符的位置并输出) 在使用全局变量m的时候,输出错误的结果,而用下面局部变量M就没问题。