gpt4 book ai didi

c++ - gnu c++如何实现new和delete

转载 作者:太空狗 更新时间:2023-10-29 21:17:57 25 4
gpt4 key购买 nike

我只看到 libstdc++-v3 中的一些声明,但找不到定义。 newdelete 是否只是封装了 mallocfree ?在哪里可以找到 newdelete 的定义?为什么我找不到 bits/c++allocator.h 包含在 bits/allocator.h 中? gcc 中有很多奇怪的东西。

最佳答案

尽管 C++ 规范指出开发人员应避免使用旧的 malloc/free 方式分配内存,但 C++ 语言本身对内存分配无能为力。 new/delete 的行为类似于具有 C++ 类型安全功能的 malloc/free 的包装器,并在 malloc 返回 NULL 时抛出预期。这就是为什么“new”从不返回 NULL 而是期望。他们为您完成这项工作。

C++ 使用诸如 glibc、libc 之类的 C 例程进行系统级操作。在 Linux 中,“实际”分配内存的唯一方法是调用 brk() 和 mmap()。所有语言包括Java和Python调用malloc()或低级api分配内存并在回收“垃圾”时调用free()。

总而言之,您问题的答案是“new/delete call malloc/free and handle expections”。

关于c++ - gnu c++如何实现new和delete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com