2
比方說,我想寫的malloc()
在C99一個選中的版本 - 沒有什麼花哨,一個簡單的包裝,而如果malloc()
回報NULL
將打印錯誤消息stderr
並退出。像記錄內存分配錯誤
void* checked_malloc(size_t size) {
void* ptr = malloc(size);
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate %zd bytes\n", size);
exit(1);
}
return ptr;
}
一個與此有關的問題是東西fprintf中 - 這可能會嘗試在它自己的分配內存和因爲我們出的內存已經將非正常失敗。
有沒有辦法在內存分配失敗後可靠地記錄錯誤消息?或者是否有更好的方法來寫入檢查malloc()
?編譯器不可知的解決方案是非常受歡迎的。