C++中函数中的局部变量到底是不是执行到变量定义处才分配内存吗,为什么我用VS调试有疑问
我一直认为C++代码在函数中是顺序执行的,直道今天调试的时候发现一个问题,如图:程序断点调试还没有执行第9行,局部变量中已经有b这个变量了,此时第十行代码还没有执行啊,怎...
我一直认为C++代码在函数中是顺序执行的,直道今天调试的时候发现一个问题,如图:
程序断点调试还没有执行第9行,局部变量中已经有b这个变量了,此时第十行代码还没有执行啊,怎么会有b的存在呢?实事上刚一进入main函数,b变量就存在了,难道说我以前认为的都是错的?在C语言中,局部变量都是函数刚一进入就全部分配了内存而不论变量实际定义的代码在第几行?
但是为什么eclipse调试java代码就不同呢?如下图:
JAVA中程序还没执行12行之前(此时准备执行,还没有执行),局部变量里只有字符串args和a,并没有b,所以我想问C和JAVA在程序执行流程上有如此大的不同?还是说VS中仅仅是把局部变量一口气全写出来,而并不是意味着在执行第7行之前,变量int b已经存在在内存中了(仅仅是因为VS这个IDE的问题)? 展开
程序断点调试还没有执行第9行,局部变量中已经有b这个变量了,此时第十行代码还没有执行啊,怎么会有b的存在呢?实事上刚一进入main函数,b变量就存在了,难道说我以前认为的都是错的?在C语言中,局部变量都是函数刚一进入就全部分配了内存而不论变量实际定义的代码在第几行?
但是为什么eclipse调试java代码就不同呢?如下图:
JAVA中程序还没执行12行之前(此时准备执行,还没有执行),局部变量里只有字符串args和a,并没有b,所以我想问C和JAVA在程序执行流程上有如此大的不同?还是说VS中仅仅是把局部变量一口气全写出来,而并不是意味着在执行第7行之前,变量int b已经存在在内存中了(仅仅是因为VS这个IDE的问题)? 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询