假设我有一个指针,并为它分配了一些内存。如果malloc
由于某种原因返回一个空指针,释放它是否被认为是一个好的实践?在这种情况下,它是否改变了一些东西?是否有必要检查malloc
是否返回一个空指针?
char *some_function()
{
char *ptr = (char *)malloc(sizeof(char) * 10);
if (ptr == NULL)
{
free(ptr);
return NULL;
}
//some operations with the pointer
}
1条答案
按热度按时间fnx2tebb1#
检查
malloc
返回NULL
是绝对必要的,因为不能将NULL
用作指向内存的指针。另一方面,
free(NULL)
什么也不做。(这是标准保证的。)所以如果你想做,你可以做,但绝对没有意义。如果malloc
返回NULL
,没有内存分配,所以没有什么可以释放。free(NULL)
法律的(并且不执行任何操作)的意义在于,它允许您在malloc
返回的任何指针上调用free
,这简化了资源释放: