我发现有些C库有ability to specify custom memory allocators(malloc
/ free
替换。)
我打算让pngquant成为可以嵌入各种软件(从iOS应用程序到Apache模块)的库。我正在使用malloc()
/ free()
和我自己的内存池进行小型分配。我总共使用2MB-50MB的内存。我使用线程,但只需要在主线程上分配。
答案 0 :(得分:2)
在任何控制内存分配至关重要的应用程序中(例如我的字段,游戏开发或其他真实或近实时系统),无法控制库中的内存分配会立即使其无法使用。
答案 1 :(得分:1)
存在许多malloc / free算法。系统malloc有时不针对库正在处理的任务进行优化,因此调用者可能想尝试一些不同的来优化性能。
一些想到的是:
还有一些垃圾收集库,例如Boehm Garbage Collector,可以通过调用提供的malloc / free替换来在C中使用(即使free是一个虚函数调用,保持兼容性)。
还有许多可能的用途,例如,可以编写一个调试malloc / free函数来跟踪库中的内存分配和解放,例如我编写的一个使用SQLite来记录有关如何使用内存的统计信息(诚然以性能为代价,但这是调试情况)。