# TCMalloc

This repository contains the TCMalloc C++ code.

TCMalloc is Google's customized implementation of C's `malloc()` and C++'s
`operator new` used for memory allocation within our C and C++ code. TCMalloc is
a fast, multi-threaded malloc implementation.

## Building TCMalloc

[Bazel](https://bazel.build) is the official build system for TCMalloc.
Experimental support for CMake is available as well.

The [TCMalloc Platforms Guide](docs/platforms.md) contains information on
platform support for TCMalloc.

## Documentation

All users of TCMalloc should consult the following documentation resources:

*   The [TCMalloc Quickstart](docs/quickstart.md) covers downloading,
    installing, building, and testing TCMalloc, including incorporating within
    your codebase.
*   The [TCMalloc Overview](docs/overview.md) covers the basic architecture of
    TCMalloc, and how that may affect configuration choices.
*   The [TCMalloc Reference](docs/reference.md) covers the C and C++ TCMalloc
    API endpoints.

More advanced usages of TCMalloc may find the following documentation useful:

*   The [TCMalloc Tuning Guide](docs/tuning.md) covers the configuration
    choices in more depth, and also illustrates other ways to customize
    TCMalloc. This also covers important operating system-level properties for
    improving TCMalloc performance.
*   The [TCMalloc Design Doc](docs/design.md) covers how TCMalloc works
    underneath the hood, and why certain design choices were made. Most
    developers will not need this level of implementation detail.
*   The [TCMalloc Compatibility Guide](docs/compatibility.md) which documents
    our expectations for how our APIs are used.

## License

The TCMalloc library is licensed under the terms of the Apache license. See
LICENSE for more information.

Disclaimer: This is not an officially supported Google product.
