当前位置: 首页 > 面试题库 >

malloc / free是libc提供的syscall还是库例程?

柳鸿信
2023-03-14
问题内容

如果malloc / free是作为libc中的库例程实现的,那么它是在 sbrk syscall还是 mmap
syscall或其他东西之上实现的呢?

通常, sys / syscall.h 中声明的函数是否包含目标计算机中的所有系统调用?


问题答案:

mallocfree是标准C库函数,其是由每个C实现来实现。

C标准仅定义了这些函数的行为方式以及预期的行为。在每种实现方式中如何实现它们。

简而言之,它们是您使用的实现的实现细节。

(“实现”由编译器,链接器,运行时库以及其他一些东西组成。)



 类似资料:
  • 编译以下代码时: 我得到警告提示: 在I之后,程序中断似乎没有改变。 以下是输出: 问题2:进程在启动时是否在堆上分配内存以供将来使用?还是编译器更改了分配的时间点?否则,为什么? 可以设置参数来控制的行为,并且有一个名为的参数,一般情况下: 如果请求的内存小于它,则将使用; 如果请求的内存大于或等于它,则将使用; 该参数的默认值是(在我的系统上),但在我的测试程序中我使用了1MB,所以选择了,当

  • 问题内容: 我从来没有见过这样的声明,它是否存在于Java世界中? 问题答案: Java的版本是-它创建指定类型的新对象。 在Java中,内存是为您管理的,因此您不能显式或对象。

  • 问题内容: 我正在使用c / c 为osx和linux开发命令行界面可执行文件。该项目将链接到opencv。我应该使用libc 还是libstdc ++? 问题答案: 我会为每个操作系统使用本机库,即GNU / Linux上的libstdc 和Mac OS X上的libc 。 libc 在GNU / Linux上不是100%完整的,而libstdc 更完整时使用libc并没有真正的优势。另外,如果

  • 问题内容: 对不起,我知道这很愚蠢,但是linux libc源代码在哪里可用?我从GNU下载的似乎不是我想要的,特别是在pthreads函数系列中找不到任何东西。 某个地方有在线(超文本交叉引用)版本吗? 问题答案: 大多数Linux使用一个名为的libc版本。 用于glibc的LXR(在线交叉引用系统)例如 在 http://koala.cs.pub.ro/lxr/glibc/中, 用于2.9版

  • 我在PayPal沙盒账户中创建了一个应用程序。我想当一些用户点击“转账”按钮时,然后PayPal将钱从我的账户转移到用户的账户(注意:我们有用户的电子邮件ID)。 因此,可以在没有身份验证的情况下将资金转移到PayPal帐户,就像离线访问方法一样。 感谢先进。

  • 这可能与将ILogger或ILoggerFactory传递给AspNet Core?中的构造函数有关?,然而,这是关于库设计的,而不是关于使用这些库的实际应用程序如何实现其日志记录。 我正在写一篇文章。net标准2.0库将通过Nuget安装,为了让使用该库的人获得一些调试信息,我依赖于微软。扩展。登录中。允许注入标准化记录器的抽象。 然而,我看到了多个接口,web上的示例代码有时使用ILogger