malloc 返回内存或虚拟地址空间

2023-12-24

malloc 是在堆上分配一块内存还是应该将其称为虚拟地址空间?

我是否挑剔地将其称为“虚拟地址空间”,或者这只是 DOS 的遗产? Linux 怎么样?

EDIT:

很多答案都很详细,但没有一个回答我的问题。


malloc在堆上分配内存,期间。

您的 C 库通常保留可用内存块的列表(或一些更复杂的数据结构),找到合适的块来满足malloc(可能将一个较大的块分割成多个较小的块)并返回free将内存添加到列表中(可能将一些较小的块合并为一个较大的块)

Only当列表不包含足够大的块来满足您的需求时malloc,库将向操作系统请求更多内存,例如使用sbrk http://en.wikipedia.org/wiki/Sbrk系统调用。此系统调用返回的地址可能是虚拟地址,也可能是真实地址,具体取决于您的硬件,但作为一名程序员,您无法(也不需要)知道这一点。

这么说malloc分配的虚拟地址空间而不是堆上的块就像是说read从硬盘而不是文件读取:从调用者的角度来看,这是无关紧要的,而且并不总是正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

malloc 返回内存或虚拟地址空间 的相关文章

  • crt0 是否加载 msvcrt.dll?

    我想弄清楚标准 C 函数是什么样的printf 在 Windows 环境下加载到内存中 我知道crt0 obj准备堆栈 调用int main int argc char argv 然后使用 main 返回的退出代码退出进程 我还听说 C 标
  • 在 Silverlight 中同步操作

    我有一个 Silverlight 应用程序 它使用操作从模型获取数据 再次从 WCF 服务获取数据 我需要以某种方式同步两个 ActionCallback 或等待它们 然后执行一些代码 Example model GetMyTypeList
  • 尝试从 Web 应用程序访问报告服务时,Internet Explorer 导致 IIS 500 错误

    我有一个 aspx Web 表单页面 它调用托管在 SQL 2012 报告服务服务器上的 SQL 2012 SSRS 报表 并使用报表查看器在 aspx 页面上显示报表 问题是当我单击链接将参数发送到报告服务器并运行报告时 页面挂起 仅在
  • System.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常

    我遇到了一个非常愚蠢的问题 我已经尝试完全重新安装 NET 但它没有解决问题 我什至无法通过谷歌搜索找到其他有同样问题的人 就在我的计算机上 如果我将 NumericUpDown 控件添加到 NET 项目中的窗体并运行该应用程序 则在运行该
  • 将项目添加到字典中作为第一个项目c# [重复]

    这个问题在这里已经有答案了 我目前正在将项目添加到字典中 如下所示 private Dictionary
  • 剃刀 2 到剃刀 3 MVC 5

    我一直在开发 MVC 4 解决方案 并且一直在尝试将其升级到 MVC 5 我已按照概述的步骤操作here http www asp net mvc tutorials mvc 5 how to upgrade an aspnet mvc 4
  • C# Response.Write pdf 不适用于 Android 浏览器

    我目前在 Android 环境中使用 pdf 导出时遇到了巨大的问题 我正在使用报告查看器控件将报告呈现为字节数组 接下来我使用response binarywrite方法将字节流输出到浏览器 这适用于所有浏览器以及 iPhone 和 iP
  • 如何在类中使用常量类变量声明常量数组?

    如何在类中使用常量类变量声明常量数组 是否可以 我不想要动态数组 我的意思是这样的 class test const int size int array size public test size 50 int main test t 5
  • WebProxy 错误:需要代理身份验证

    我使用以下代码从互联网获取html数据 WebProxy p new WebProxy localproxyIP 8080 true p Credentials new NetworkCredential domain user passw
  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • OpenMP while 循环中的手动同步

    我最近开始使用 OpenMP 为大学的一个项目做一些 研究 我有一个矩形且均匀分布的网格 在该网格上我使用迭代方案求解偏微分方程 因此 我基本上有两个 for 循环 网格的 x 方向和 y 方向各一个 并由 while 循环包裹以进行迭代
  • powershell 和 cmd 之间的文件大小不同[重复]

    这个问题在这里已经有答案了 我正在使用一点processconf js工具来构建configuration json来自多个文件 json files 这是我正在使用的命令 node processconf js file1 json fi
  • ASP.NET:通过命名空间一次注册多个控件?

    是否可以在 aspx 文件中注册用户控件的完整命名空间 而不是单独注册每个控件 我创建了一堆用户控件并将它们收集到自己的命名空间 MyWebControls 中 如下所示 隐藏代码 namespace MyWebControls publi
  • 无法在 Windows 7 64 位中正确设置 java 路径

    我已经在计算机中安装了 java 1 6 并且还使用高级变量设置设置了路径 当我尝试执行 java 时 在命令提示符下出现此错误 Error could not open C Program Files Java jre7 lib amd6
  • 尝试在Python3.6中实现`signal.CTRL_C_EVENT`

    我正在阅读有关信号的内容并尝试实施signal CTRL C EVENT 据我了解 如果用户在程序运行时按 CTRC C 将发送一个信号来终止程序 我可以将程序指定为参数吗 我尝试测试用法 import sys import signal
  • 在 '*' 标记之前编译“错误:预期 ')' 时出现多个相同错误

    我正在尝试用 C 语言编程 当我使用以下参数进行编译时 gcc D BSD SOURCE Wall ansi pedantic g tokenizer c FileOccur c WordList c wordstat c indexer
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求
  • 如何在 Ubuntu x64 中使用 ptrace 插入 int3?

    我正在努力追随本指南 http eli thegreenplace net 2011 01 27 how debuggers work part 2 breakpoints 通过设置断点达到相同的结果 唯一的区别是我在 x64 系统上 所以

随机推荐