问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++中对象的内存空间是在什么时候被分配的24

发布网友 发布时间:2023-10-07 21:56

我来回答

4个回答

热心网友 时间:2024-12-04 09:13

你可能对C++中的结构体不是很了解。这些结构体有:enum(枚举),struct(结构),union(联合),class(类)。当你定义一个结构体类型时,是不存在内存分配的。譬如:
struct student
{
char *name;
int age;
};
这个时候仅仅是通知编译器有了student这种struct类型,没有内存分配。只有当声明一个对象时,即student s;时,编译器才会给变量s分配内存,且内存大小为student结构体大小,可以sizeof(s)求出为8。
另外,程序都是通过编译器编译成功后生成目标文件,才能执行的。编译器就是按顺序来给变量分配内存的,当然是走到变量声明处,才会给它分配内存。如果goto语句跳过变量声明,程序会报错,且看下面例子:
#include<iostream>
using namespace std;

int main()
{
goto b;
int i=10;
b:
cout<<i<<endl;

return 0;
}
很显然,编译器无法给i初始化,故编译出错。
另外,变量又分为全局变量和局部变量,又有static,auto等等之分。全局变量是在编译开始就分配内存,且放在静态存储区。局部变量则是走到该变量声明处才分配内存,且放在栈中,static也是指该变量放在静态存储区。如果想了解更多,请看网上高手写的日志:
http://pondra.blog.163.com/blog/static/491363082007111743634707/
以上拙见,希望能对你有所帮助。

热心网友 时间:2024-12-04 09:13

你需要的是一本计算机组成结构的书籍。

switch中不加大括号是不能声明对象的;分配空间的时机决定于你的对象分配的方式,栈上、堆上、全局?

热心网友 时间:2024-12-04 09:14

那为什么这个程序是对的?

#include <iostream>
using namespace std;

int main( )
{
int i=0;
if ( i == 0)
{
int a = i;
cout << a << endl;
}
else
{
int b = i+1;
cout << b << endl;
}
}

热心网友 时间:2024-12-04 09:14

C++允许在程序的内部申请变量,并不意味着可以在任何地方。具体的说,就是不允许在程序有分支的地方申请,比如if(a>b) int a;

至于类,如果学过C,就明白,其实只是有函数的结构体。他内部的变量空间,也是像普通变量一样申请的如上例中的int。

事实上,C++在这方面,只不过更人性化设计,对程序本身对多大的改变。只是不像c一样,一定要求在函数开始的地方将所有的变量都申请齐了。

至于楼主提问的,关于构造函数,实际上那申请的一般都是在堆内的空间。和我们刚才所说的,在栈内申请空间还是有本质区别的,希望楼主不要混淆~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
高考为什么不能补报志愿? 帮我翻译一句话“不管多久以后,不管世界变成什么样子,我都是哪个最骄傲... 温州到周口的大巴车经过台州路桥客运中心那里吗? 微信怎么设置看不到微信号 不想让微信号显示出来怎么办 2021年大学教师资格证报名费用 大埔教师资格证报名网 大埔县教育局办教师资格证需要准备哪些资料? 深情触摸2016百度云链接 求深情触摸百度云分享 少儿平安福保险有教育金吗1 密闭套管与防护密闭套管有什么不同46 把文言文翻译成现代文9 怎么把步步高x5l的拨号键设置拨号键变成苹果一样的拨号键 顺丰快递货号028971325249走到哪里了 每天需要面对电脑12个小时用什么缓解眼疲劳的眼药水好1 hao123是什么网站4 申请小额担保贷款额度是多少贷款期限有多长 vivox7能同时上两个吗? 从网上得知河北沧州国画家李松林老师是国画大家,国画的确很有风格。_百... 苏州橘郡花园小区周边配套怎么样? 5句 翻译1 为什么有的人在微信朋友圈发动态之后,过一会儿设为私密,然后过...98 如何快速注销18 当给水ph较高时,有利于防止有机物对反渗透的污染?1 z360在XP系统下怎么安装独显 化妆棉有什么用处啊?与纸巾有什么区别?42 新生孔雀鱼的养殖和喂养。21 我鱼缸养的,小斑马鱼。孔雀鱼,宝莲灯鱼,请问用什么鱼清理缸的...1 方面减肥期间可以吃吗569 怎样防止内网的DDOS攻击? 怎么介绍非标灯具 手机壳是磨砂好还是光面好6 谁能给我几个笑话和脑筋急转弯?越多越好!27 求薛仁贵后续或者是关于他儿子薛丁山的电视,叫什么名字?1 跪求给老师的一封信 给校长的建议书(意见要独特!!!!!)62 hao123的网址是什么?8 新概念英语第二册94课摘要写作答案,左右2篇都要!!!264 初中化学实验室制二氧化碳时盐酸质量分数为多少时最好? 钢板的厚度有哪几种规格?20 C++局部静态变量在什么时候分配内存和初始化7 QQ被盗很伤心都20级了,我和盗我号的人对话!5 电信手机的网络设置怎么设置????77 怎么快速注销? 请求文言文高手把这句现代文翻译成文言文! 一包颗粒是2g每日服三次每次服四分之一包是多少 实名认证解除后再注销还能查到原绑定人的消息吗???1 被DDOS攻击了,该怎么办? 我母亲今年51岁,今年开始始终觉得很热,总是出汗。晚上整夜开着空调别... 尼康d300带机身马达吗