c语言-在C语言编程中,我定义的全局变量足有2M大小,但生成的程序只有20k,怎么回事?

问题描述

在C语言编程中,我定义的全局变量足有2M大小,但生成的程序只有20k,怎么回事?

在C语言编程中,我定义的全局变量足有2M大小,但生成的程序只有20k,怎么回事?

解决方案

全局变量是运行时操作系统分配的,分配在堆上,不是分配在静态区,所以不会影响exe的大小。

解决方案二:

你的全局变量没有初始化数据吧?如果你有2M大小的数据,就不一样了。
比如,
char a[2*1024*1024] = {0,1,2,3,4..........};
char b[2*1024*1024];
在链接器中,a是已初始化数据,b是未初始化数据。已初始化数据需要占用exe空间,未初始化数据就不需要了。

解决方案三:

栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。

时间: 2024-12-02 12:03:47

c语言-在C语言编程中,我定义的全局变量足有2M大小,但生成的程序只有20k,怎么回事?的相关文章

struct-有关C++图形编程中模板定义的问题

问题描述 有关C++图形编程中模板定义的问题 template <typename T> struct tvec3 { typedef T value_type; typedef std::size_t size_type; typedef tvec3<T> type; value_type x; value_type y; value_type z; size_type length() const { return 3; } value_type const & ope

c++-C++中宏定义比较两个数的大小

问题描述 C++中宏定义比较两个数的大小 #include #define max(a,b) ((((long int)((a)-(b)))&0x80000000)?b:a) void main() { int t,a,b; cout<<"output a,b"< cin>>a,b; t=max(a,b); cout<<t<<endl; }为什么运行结果老是a的值? 解决方案 ((((long int)((a)-(b)))&

深入理解C++编程中的局部变量和全局变量_C 语言

局部变量 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的.同样,在复合语句中定义的变量只在本复合语句范围内有效.这称为局部变量(local variable).如: 对局部变量的一些说明: 1) 主函数main中定义的变量(m, n)也只在主函数中有效,不会因为在主函数中定义而在整个文件或程序中有效.主函数也不能使用其他函数中定义的变量. 2) 不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰.例如,在f

java文件中可以定义多个类的话,为什么我这个程序编译不通过呢?求大侠

问题描述 public class TestBreak {public static void main(String[] args){int stop = 4;for(int i=0;i<10;i++) {if(i == stop)break;System.out.println(i);}}}class TestContinue {int temp = 4;for(int j=0;j<10;j++) {if(j == temp)continue;System.out.println(j);}

仔细触摸Java编程中的“文档”和“包”

编程 什么是包 Java中的包(Package)其实指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface).Java语言的包可以被另一个Java开发包所使用.如果我们要引用某个包中的类,用import关键字来标明即可.比如: import java.util. date=new Date  提示:import java.util.表示java.util中的所有公有类和接口被引入到当前包.这里的匹配符可以调入多个类名. 常用的Java标准包 JDK为我

正则表达式在网络编程中的运用

导读: 正则表达式在网络编程中的运用 [前言:]在我们编写WEB程序时,经常会判定一个字符串的有效性,如:一个串是否是数字.是否是有效的Email地址等等.假如不使用正则表达式,那么判定的程序会很长,并且轻易出错,假如使用正则表达式,这些判定就是一件很轻松的工作了.本文全面介绍正则表达式的慨念.格式.并以在PHP.ASP中的应用实例增加读者的感性熟悉.正则表达式的应用很广,需要大家在学习和实践中不断的总结. 正则表达式简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.在网络编

跨越边界: 活动记录和Java编程中特定于域的语言

DSL 是专门解决特定于域问题的语言.通过更接近问题的操作,DSL 可以提供在通用语言中可能找不 到的好处.Java 世界中充满了 DSL.属性文件.Spring 上下文.标注的某种用法以及 Ant 任务,都是 DSL 的示例. 在开始研究其他像 Ruby 这样的语言的时候,我开始理解到 Java 语言目前对于 DSL 还没有良好的把 握.在这篇文章中,将看到 Ruby 使用的四种集成干净的 DSL 的技巧.然后,将看到在 Java 语言中可 能存在的选项是什么. 隐藏语言的世界 虽然您可能不知

源代码-关于C语言编程中R树索引的问题

问题描述 关于C语言编程中R树索引的问题 求教有没有大神知道R树索引如何建立.删除.插入等,急需一份源代码参考学习.谢谢啊,好人一生平安... 解决方案 http://www.cnblogs.com/javaspring/archive/2012/08/14/2656223.html

c语言编程 多项式加法-c语言编程中求多项式加法

问题描述 c语言编程中求多项式加法 多项式加法(5分) 题目内容: 一个多项式可以表达为x的各次幂与系数乘积的和,比如: 2x6+3x5+12x3+6x+20 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出. 程序要处理的幂最大为100. 输入格式: 总共要输入两个多项式,每个多项式的输入格式如下: 每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数.第一行一定是最高幂,最后一行一定是0次幂. 注意第一行和最后一行之间不一