为了完成一个任务,我需要分配一个动态缓冲区,使用malloc()
来分配初始缓冲区,如果需要扩展该缓冲区则使用realloc()
。在我使用(re|m)alloc()的任何地方,代码看起来像下面这样:
char *buffer = malloc(size);
if (buffer == NULL) {
perror();
exit(EXIT_FAILURE);
}
该程序仅从文件中读取数据并输出,因此我认为在(re|m)alloc失败时退出程序是个好主意。现在,真正的问题是:
是否有益于对调用进行包装,例如像这样?
void *Malloc(int size) {
void *buffer = malloc(size);
if (buffer == NULL) {
perror();
exit(EXIT_FAILURE);
}
return buffer;
}
这是一个不好的主意吗?
checked_malloc
。 - Vladperror
而不带参数会导致未定义的行为。但是,空参数是有效的。下次请包含正确的头文件,这样编译器就会在您编写此类错误代码时给出错误提示。 - R.. GitHub STOP HELPING ICE