在C++中定义一个变量,例如:int a; 此时已经为a分配空间了吗

 我来答
zhuhuaizhong
推荐于2016-06-09 · TA获得超过7276个赞
知道大有可为答主
回答量:3978
采纳率:63%
帮助的人:3621万
展开全部
看你定义的变量的类型

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;那就是定义。这两种情况都已经分配内存空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fe74e2
2013-04-15 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:278万
展开全部
是的,已经分配空间了。
追问
是在内存中吗
追答
是的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2976c9b
2013-04-15 · TA获得超过1555个赞
知道小有建树答主
回答量:934
采纳率:0%
帮助的人:716万
展开全部
int a;是在栈中分配了内存。
int *a=new int;//在堆中分配了内存
追问
那如果是int *a;呢
追答
int *a;只是在栈中声明一个指针变量的。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自上清镇勤奋的美羊羊
2013-04-15 · TA获得超过222个赞
知道小有建树答主
回答量:480
采纳率:0%
帮助的人:158万
展开全部
是的…………
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式