计算机原理 - 所谓的“内存空间在编译期间完成分配”到底发生了什么?

查看:108
本文介绍了计算机原理 - 所谓的“内存空间在编译期间完成分配”到底发生了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

对于程序中的基本数据类型或者引用类型,的确可以明确它们所占内存空间的大小。我的理解是编译器在编译期间就确定了程序中基本数据类型和引用类型的大小,并在当程序被加载到内存时可以确定的分配一块固定大小的内存空间。作为比较,如果是通过new动态分配内存的话,在编译期间是确定不了所需内存大小的。因此,"内存空间在编译期间完成分配"并不是指编译器开辟了一块内存空间,而是指编译器在编译期间就知道了程序中的基本数据类型和引用类型将会占据的内存空间大小。

以上是我的理解,不知道对不对?如有偏差,欢迎拍砖,最好能够给出代码来验证,谢谢。

解决方案

并不是,这里说的能够在编译时能够确认的内存通常是栈内存,这块内存是进栈时一定分配的。而new的操作是在堆上完成的,这块内存允许根据允许环境动态调配,所以在编译器无法确定是否分配。
这里与变量类型毫无关系,基础数据类型也可以出现在堆内存中,也是可以动态分配的。

这篇关于计算机原理 - 所谓的“内存空间在编译期间完成分配”到底发生了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆