我有两个程序:
program 1:
----------
#include<stdio.h>
int main()
{
int a[10];
return 0;
}
program 2:
----------
#include<stdio.h>
int a[10];
int main()
{
return 0;
}
1)两个程序都可以为数组 a [10] 分配内存
2)如果两个程序都在分配内存中完成,其中内存段(我的意思是数据段或堆栈段)是分配的内存。
3)任何人都可以解释程序1和程序2之间的区别吗?
答案 0 :(得分:4)
计划1:
计划2:
答案 1 :(得分:0)
共有4个部分 - (Global seg + Constant seg)=(数据部分)
在全局声明中,它位于全局数据部分。而本地的一个是在Stack段中,因为一个函数实例化将一个帧推入到堆栈中,其中包含变量,...等状态信息,并从函数调用函数的返回点开始。
+ --------- +
|堆栈.. |
+ --------- +
|堆...... |
+ --------- +
|全局|
+ --------- +
|常量... |
+ --------- +
|代码... |
+ --------- +
现在在第一种情况下,它位于Stack段中。在Globals记忆段中的第二种情况 堆栈段的数组具有其功能体的范围。在函数存活之前它将一直存在。 但是,全球一个将继续存在,直到该计划结束。现在这里函数是main(),然后这两个将具有相同的生命周期。
global int变量的初始值为0.但是本地变量将包含垃圾值(除非已初始化)。