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()
?编译器不可知的解决方案是非常受欢迎的。