初始化

总是强调初始化,却总是忘。

今天做抓包程序,打开网卡驱动的时候,lpAdapter =   PacketOpenAdapter(AdapterList[Open-1]);总是失败。

幸亏有参考程序,发现AdapterList数组声明为全局比变量的时候没问题,但是声明成局部变量就有问题。

原因如下:

 

全局变量是在编译时就分配好空间的。这意味着全局变量的大小,会影响exe文件的大小。
例如:
char str[100000] = "helloworld"; //编译出来的exe大小为156K
若改为:
char str[1000000] = "helloworld"; //编译出来的exe大小为1.212M
注意,这里赋了初值。若不赋值,不会影响exe大小,这可能是因为编译器做了优化。

全局变量若没有手工进行初始化,系统会为全局变量自动初始化,即所有的空间都为0,char数组是空字符串,int是0,等等。这项工作是编译器做好的。而局部变量不会自动初始化,因为局部变量是运行时在堆栈上分配的。因此,局部变量大小不会影响exe文件大小。可能考虑到效率问题吧,系统分配好空间后,没有把其全部置为0。所以,一个好的编程习惯是定义变量时初始化

 

转载于:https://www.cnblogs.com/peijihui/archive/2011/05/28/2060791.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值