在我的代码中,几乎每个函数都有一个或多个malloc调用,每次我必须执行以下操作:
char *ptr = (char *)malloc(sizeof(char) * some_int);
if (ptr == NULL) {
fprintf(stderr, "failed to allocate memory.\n");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
这是额外的四行代码,如果我在使用malloc后每次添加它们,我的代码长度会增加很多..那么有一种优雅的方法来处理这个问题吗?
非常感谢!!
在消耗所有内存时尝试偶然发现通常没什么意义.不妨叫它退出:
char* allocCharBuffer(size_t numberOfChars)
{
char *ptr = (char *)malloc(sizeof(char) * numberOfChars);
if (ptr == NULL) {
fprintf(stderr, "failed to allocate memory.\n");
exit(-1);
}
return ptr;
}
Run Code Online (Sandbox Code Playgroud)
抱歉,但是在 C 中你对此无能为力。除了...喘气...将其全部包装在一个宏中,该宏将自动执行if检查并允许您每次编写自定义错误处理代码。在那里,我说了。
说真的,C 并不是为了提供这样的便利。如果您不介意当场退出程序,您可以将其包装在一个函数中,当然该函数会exit在分配失败时执行 - 但这不是通用的解决方案。