【发布时间】:2013-03-02 02:15:21
【问题描述】:
假设我正在尝试在 C99 中编写 malloc() 的检查版本 - 没什么花哨的,一个简单的包装器,如果 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()?编译器不可知的解决方案是非常受欢迎的。
【问题讨论】:
标签: c memory-management malloc