【发布时间】:2019-09-06 04:38:35
【问题描述】:
我必须测试一个提供自己的内存分配例程的库:
void* allocation_routine(size_t size) throw();
文档说明此函数至少分配 size 字节的内存(允许分配更多)。顺便说一句,该函数在内部使用 posix_memalign,但实现可能会发生变化。
我想知道是否可以为这种功能编写单元测试?我们如何测试是否分配了所需的内存量?
更新:
如果我们不能编写单元测试,那么最接近的解决方案是什么?
【问题讨论】:
-
您需要选择 C 或 C++ 标签。这些语言在异常处理方面有很大不同,请参阅 How to throw an exception in C? 或 throw expression - cppreference.com
-
我建议模拟标准的内存分配函数来检查它们是否被调用(以及调用的大小)。大多数实现相对容易实现这一点。如需具体帮助,您需要提供您正在使用的具体实现,并(正如 David C. Rankin 所要求的)指定您使用的语言(C 和 C++ 是不同的语言)。
-
例如在 gcc (C) 中,你可以使用memory allocation hooks。
-
@DavidC.Rankin 此例程来自 .cpp 文件。但是代码非常C风格。我认为 C 解决方案在那里更合适。
标签: c++ c linux unit-testing memory-management