在检查libc ++代码时,我看到ndk分配器__allocate函数正在调用__builtin_operator_new,但是我在libc ++代码中找不到它的定义。
顾名思义,它是内存分配功能。但是谁来实现呢?它是由clang,gcc等编译器定义的吗?在哪里可以找到它的定义?
它是一个内在函数,由编译器本身隐式定义(因此被称为内置函数)。它记录在Clang的语言扩展部分中:
__builtin_operator_new和__builtin_operator_delete
__builtin_operator_new就像非放置非类new-expression一样分配内存。这与直接调用普通的非放置完全一样::operator new,不同之处在于它允许某些优化,而C ++标准不允许直接调用函数::operator new(特别是删除新的/删除对并合并分配)。同样,
__builtin_operator_delete释放内存就像非类的delete-expression一样,完全就像直接调用normal一样::operator delete,只不过它允许优化。当前仅可使用大小不一的形式__builtin_operator_delete。这些内置程序旨在用于实现
std::allocator和其他类似的分配库,并且仅在C ++中可用。
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |