看你定义的变量的类型
1) 堆
int* a = new int[100];//运行到这里才给a指向的空间分配
2) 栈
void fun()
{
int a[100]; // 进入函数fun的时候从栈上分配
}
3) 全局变量,常量
程序启动时分配
4) static
void fun()
{
static int a[100]; // 第一次运行到这里时分配
}
所以说如果你定义的是全局变量,程序启动时分配内存,如果是局部变量,则运行到那里时才分配!
定义分为定义性声明和应用性声明,第一种为定义,其实这只是狭义的定义和声明,你所说的状况要分情况,例如如果a是一个全局变量,那么int a就是声明,扩展作用域,如果int a;a= 0;那就是定义。这两种情况都已经分配内存空间。
是的,已经分配空间了。
int a;是在栈中分配了内存。
int *a=new int;//在堆中分配了内存
是的…………