首页 / C# / c# – 数组内存分配 – 分页
c# – 数组内存分配 – 分页
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 数组内存分配 – 分页,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1301字,纯文字阅读大概需要2分钟。
内容图文
![c# – 数组内存分配 – 分页](/upload/InfoBanner/zyjiaocheng/951/44666d0cfeba40ed8253cd84efa6f42a.jpg)
不确定Java,C#和C的答案是否相同,所以我对所有答案进行了分类.所有语言的答案都会很好.
我一直在思考的所有日子,如果我分配数组,所有单元格将在一个连续的空间中.因此,如果系统中没有足够的内存,则会出现内存不足异常.
没事,我说的是什么?或者是否有可能,分配的数组将被分页?
解决方法:
C阵列是连续的,这意味着存储器具有连续的地址,即它在虚拟地址空间中是连续的.它在物理地址空间中不需要是连续的,因为现代处理器(或它们的存储器子系统)具有将虚拟页面与物理页面相关联的大映射.在用户模式下运行的进程永远不会看到其数组的物理地址.
我认为在实践中大多数或所有Java实现都是相同的.但程序员永远不会看到数组元素的实际地址,只是对数组的引用和索引它的方法.因此从理论上讲,Java实现可能会破坏数组并在[]运算符中隐藏该事实,尽管JNI代码仍然可以以C风格查看数组,此时需要一个连续的块.这假设JVM规范中没有关于数组布局的内容,jarnbjo告诉我没有.
我不知道C#,但我希望情况与Java非常相似 – 您可以想象一个实现可能会使用[]运算符来隐藏数组在虚拟地址空间中不连续的事实.一旦有人获得指针,假装就会失败. [编辑:Polynomial说C#中的数组可能是不连续的,直到有人将它们固定为止,这是有道理的,因为你知道在将对象传递给使用地址的低级代码之前必须先固定对象.
请注意,如果分配一个大型对象类型的数组,那么在C中,数组实际上是端对端放置的许多大型结构,因此连续分配所需的大小取决于对象的大小.在Java中,对象数组“实际上”是一个引用数组.所以这是一个比C数组更小的连续块.对于本地类型,它们是相同的.
内容总结
以上是互联网集市为您收集整理的c# – 数组内存分配 – 分页全部内容,希望文章能够帮你解决c# – 数组内存分配 – 分页所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。