什么是涉及一个失败的malloc()
单元测试代码路径的最佳方式?在大多数情况下,它可能并不重要,因为你正在做的事情一样单元测试()
thingy *my_thingy = malloc(sizeof(thingy));
if (my_thingy == NULL) {
fprintf(stderr, "We're so screwed!\n");
exit(EXIT_FAILURE);
}
,但在某些情况下,你必须比死其他的选择,因为你已经分配给高速缓存或任何一些额外的东西,你可以回收该内存。
但是,在那些您可以尝试从失败的malloc()
中恢复的情况下,您在代码路径中做了一些棘手且容易出错的错误,这使得测试变得尤为重要。你如何真的去做这件事?
您可以劫持'malloc()'并使其有时返回0。 – 2009-11-10 21:08:57
当进程内存不足时,许多库函数(如'printf')可能会失败。 – ephemient 2009-11-10 21:19:00
@ephemient没关系,如果'fprintf()'正确处理。 ;-) – 2018-01-08 15:14:32