什麼是涉及一個失敗的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