在我的代码几乎每一个功能都有一个或多个malloc的电话,每一次我必须做一些事情,如:整洁的方式来处理malloc错误,而不检查每次malloc调用后是否返回NULL?
char *ptr = (char *)malloc(sizeof(char) * some_int);
if (ptr == NULL) {
fprintf(stderr, "failed to allocate memory.\n");
return -1;
}
这是代码四个额外的行,如果我加入他们,我用一个malloc后每次,我的代码长度会增加很多..那么有没有一种优雅的方式来处理这个问题?
非常感谢你!
如果你的代码长度会增加很多,你应该考虑一下你为什么要调用'malloc'这么多。这可能表明你正在尝试将不同语言的成语翻译为C,而不是正确使用C ... –
请注意,不需要在C中投射'malloc'的返回值,并且可能会隐藏编译器在没有演员。 – pmg
@pmg你说的是'(char *)'吧?这掩盖了什么样的错误? – cokedude