在C++中定义一个变量,例如:int a; 此时已经为a分配空间了吗
5个回答
展开全部
看你定义的变量的类型
1) 堆
int* a = new int[100];//运行到这里才给a指向的空间分配
2) 栈
void fun()
{
int a[100]; // 进入函数fun的时候从栈上分配
}
3) 全局变量,常量
程序启动时分配
4) static
void fun()
{
static int a[100]; // 第一次运行到这里时分配
}
所以说如果你定义的是全局变量,程序启动时分配内存,如果是局部变量,则运行到那里时才分配!
1) 堆
int* a = new int[100];//运行到这里才给a指向的空间分配
2) 栈
void fun()
{
int a[100]; // 进入函数fun的时候从栈上分配
}
3) 全局变量,常量
程序启动时分配
4) static
void fun()
{
static int a[100]; // 第一次运行到这里时分配
}
所以说如果你定义的是全局变量,程序启动时分配内存,如果是局部变量,则运行到那里时才分配!
追问
程序结束后,会自动释放内存吗
追答
显然的,否则系统内存不就越来越少用光了么。
2013-04-15
展开全部
定义分为定义性声明和应用性声明,第一种为定义,其实这只是狭义的定义和声明,你所说的状况要分情况,例如如果a是一个全局变量,那么int a就是声明,扩展作用域,如果int a;a= 0;那就是定义。这两种情况都已经分配内存空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,已经分配空间了。
追问
是在内存中吗
追答
是的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a;是在栈中分配了内存。
int *a=new int;//在堆中分配了内存
int *a=new int;//在堆中分配了内存
追问
那如果是int *a;呢
追答
int *a;只是在栈中声明一个指针变量的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的…………
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询