我正在学习C语言,在一些代码示例中,我看到在为指针分配一些内存之后,我们必须检查指针是否为NULL。例如:我们是否总是需要检查malloc/realloc之后指针是否为空?
CVector *vector = malloc(sizeof(struct CVectorImplementation));
assert(vector != NULL);
另一个例子:
vector->elements = realloc(vector->elements, vector->elemsz * vector->vec_capacity);
assert(vector->elements != NULL);
不过,我觉得因为指针已经分配,那么它有分配的内存作为其值的地址,因而它总是需要?为什么?
这样做是为了检查内存分配是否成功。 – SKD
sidenote:assert不是检查内存分配是否成功的好方法,assert只在调试时才有效。你应该做一个if语句,这样它就可以在调试和发布模式下工作。 –