算法入门—局部变量和全局变量大小限制
2013-08-21 13:25
232 查看
学习字符串计数函数时发现了局部变量和全局变量是有不同的大小限制的,字符串使用局部变量申请10^7空间时会无法运行,但是全局变量会正常运行,如下所示:
原因很简单,那就是局部和全局的地位是不等的,全局变量是皇室成员,被存储在全局区/静态区,这一区空间很大,而局部变量是可怜的平民百姓,被存储在栈区,这一区是一段连续的地址,空间相对很小,所以在使用局部变量妄想申请10^7的空间,就会栈溢出。
#include<iostream> #include<stdio.h> #include<string.h> #include<time.h> #define maxn 10000000+10 #define CLOCK_PER_SEC 1000 char s[maxn]; int main(){ //char s[maxn];//长度6个0以下都可以,7个0就不行了 int tot = 0,i; FILE * text; text = fopen("file.txt","w+"); for(i = 0; i < 1000000; i++) fprintf(text,"%c",'1'); fclose(text); text = fopen("file.txt","r+"); fgets(s,maxn,text); printf("finished\n"); fclose(text); for(i = 0; i < strlen(s); i++) if(s[i] == '1') tot++; printf("There are %d characters '1' in the string.\n",tot); system("pause"); return 0; }
原因很简单,那就是局部和全局的地位是不等的,全局变量是皇室成员,被存储在全局区/静态区,这一区空间很大,而局部变量是可怜的平民百姓,被存储在栈区,这一区是一段连续的地址,空间相对很小,所以在使用局部变量妄想申请10^7的空间,就会栈溢出。
相关文章推荐
- C语言 全局变量和局部变量的大小限制(关于堆栈的划定)
- C语言 全局变量和局部变量的大小限制
- C语言 全局变量和局部变量的大小限制
- C语言 全局变量和局部变量的大小限制
- C语言 全局变量和局部变量的大小限制
- C语言 全局变量和局部变量的大小限制
- C语言 全局变量和局部变量的大小限制
- Python入门的36个例子——14 局部变量与全局变量
- python入门基础教程07 python的局部变量和全局变量
- Web前端从入门到放弃(js全局变量、局部变量、闭包)
- python入门基础教程07 python的局部变量和全局变量
- 最新发现:C语言中局部变量数组最大只支持1M,而全局变量数组没有这个限制!
- c语言局部变量与全局变量大小的限制
- Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性
- 程序的局部变量 全局变量 动态申请数据分别存储在什么地方
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量与局部变量(静态)
- 局部变量、全局变量、堆、堆栈、静态和全局
- static 全局变量 局部变量 函数
- python对象、引用、全局变量和局部变量的关系