永发信息网

C++中函数中的局部变量到底是不是执行到变量定义处才分配内存吗,为什么我用VS调试有疑问

答案:1  悬赏:70  手机版
解决时间 2021-04-06 20:02
C++中函数中的局部变量到底是不是执行到变量定义处才分配内存吗,为什么我用VS调试有疑问
最佳答案
C语言C++语言的局部非静态变量或者局部非静态对象在函数开始执行的时候就分配好了内存空间,但是在到达对象或者变量的定义点之前,是不能对其进行引用的。对于局部非静态对象,构造函数只有到定义点才调用。这些都是实现细节,不是C++标准定义的,所以不同的编译器和系统可能有所不同的实现。在C++语言中,一个对象只有调用了构造函数之后才算真正的创建完成,所以即使内存提前分配,但是对象依然还没有完成创建。

Java语言和C++语言本质上不一样:一个是解释型语言、一个是编译型语言。C++语言经过编译之后直接生成CPU可以直接处理的机器指令,而java语言需要首先编译成某个中间语言,执行的时候再由解释器一步一步解释。所以C++语言编写的程序在编译时就可以直接进行优化,比如对于函数的局部变量,因为个数确定、类型确定,所以可以直接在函数的开头生成分配容纳所有局部变量的内存空间的指令(通常是一个修改栈顶的指令),执行一个指令总比执行多个分开的指令要快得多。

你用的Visual Studio,在调试模式下分配给局部变量的内存会大很多,这是用于检测堆栈异常的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题1945年,蒋介石之所以要采取“假和平、
超市六月标语大全,描写六月花的句子
从自行车的结构和使用上来看,它涉及了许多物
想知道长颈鹿墙面柒价格
4.8x0.2+48x0.48简便方法?
耳朵的重要性名言警句,形容自己捂上耳朵闭上
明天平凉到深圳的汽车票是多少钱
单选题选出下列句子朗读节奏划分正确的一项A.
95开头14位数字是那家快递
苹果比梨重30千克,梨的重量比苹果少1/3,苹果
教师对小学生综合评语,一年级小学生对老师的
征途2s200级装备先合传说还是先练翔龙
信基集团的老板是谁
奥丁西餐厅猫粮分幼猫和成猫的吗
请问R9 370X和R9 285哪个好???
推荐资讯
哪里能刻光盘,在无锡哪里有刻光盘的地方谢谢
沙里面的石头,泡水里有点感觉发绿,墨绿。洗
为什么盐放多了放点味精就不咸了?
我数学不好,问下一平方米是8元,310cm*30cm
关于北京电影大学继续教育学院的成人高考。
江岸区武汉交通银行24小时自助银行(吉庆街支
普通账户里的钱如何划转到融资融券的信用账户
单选题Hisparents________himandtheynever
歌词中有还是不能和你分手这首歌歌名
不住祈祷的意思是什么,不住的近义词是什么
德莱文如何走砍接斧头,LOL的德莱文接斧头是什
什么火什么天什么成语
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?