很多朋友对编译器和系统对变量如何分配内存不是很清楚,也很容易搞糊涂,我们下面 就以一个小程序为例看看编译器和系统是如何为变量分配内存的.
注意:我的编译环境为VC++6.0. 系统平台为: windows XP 不同的编译环境和操作系统可能有所不同.
#include < iostream>
using namespace std;
int
main()
{
int a[5] = {
1,2,3,4,5} ;
int b[5] = {
6,7,8,9,10} ;
cout << b[6] << endl;
return 0;
}
输出结果 2
很多朋友可能对这个结果很是迷惑,会以为b[6]属于越界访问,为什么不但没 有报错,反而输出了结果呢?为了解决这个问题,我们把这10个数字在内存中的存储情况列出来:
0012FF7C |
5 |
0012FF78 |
4 |
0012FF74 |
3 |