目次
glibc は GNU-C のライブラリーです。
C++ のコンパイラなんかもこれを使っています。
malloc() 関数の実装も glibc に含まれます。
ということでメモリー管理を掘り下げたいなら glibc を少し学んでおく必要があります。
とは言っても glibc 全部の説明なんて、とてもじゃないけどできません。
それで詳細のチェックは読者におまかせしますが、まずはソースコードを読める環境だけは整えようじゃありませんか。
まずは現在使われている glibc のバージョンをチェックです。
$ ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 作者 Roland McGrath および Ulrich Drepper。
それと glibc のライブラリーはコマンド(実行可能ファイル)として使うと、バージョンがチェックできます。
$ /lib/x86_64-linux-gnu/libc.so.6 GNU C Library (Ubuntu GLIBC 2.27-3ubuntu1) stable release version 2.27. Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 7.3.0. libc ABIs: UNIQUE IFUNC For bug reporting instructions, please see: <https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.
その他にもバージョンの調べ方は色々あるので読者におまかせしますね。
最後に glibc を github からダウンロードする必要があるんですが、これは読者が自分で調べることを進めますが、一応以下のように bminor さんという方がリポジトリーを作っているのでクローンできるようになっています。
$ git clone -b release/2.27/master https://github.com/MacKomatsu/glibc.git
https://github.com/MacKomatsu/glibc.git リポジトリーは bminor の glibc というリポジトリーを2018年にフォークしたものです。
コマンドの方は「release/2.27/master」というブランチを指定してクローンしています。
筆者も glibc に詳しい「ニキ」(アニキ、アネキの短縮形として 2ch で誕生した言葉らしい)ではないので glibc-2.27 のリリース版と勝手に理解しています。
まあ、ブランチが多すぎて、何がリリースなのか分からないといきはリリースと名前のついたものを見つけておけば、大体は古いバージョンのリリース版なので、間違ってはないと思います。
Copyright 2018-2019, by Masaki Komatsu