可能的重复:
ptr 为 NULL 的 free(ptr) 是否会损坏内存? https://stackoverflow.com/questions/1938735/does-freeptr-where-ptr-is-null-corrupt-memory
我正在编写一个 C 函数,它会释放一个指针(如果它是)malloc()
编辑。指针可以为 NULL(在发生错误并且代码没有机会分配任何内容的情况下)或分配为malloc()
。使用安全吗free(ptr);
代替if (ptr != NULL) free(ptr);
?
gcc
一点也不抱怨,即使-Wall -Wextra -ansi -pedantic
,但这是好的做法吗?
引用C标准,7.20.3.2/2来自ISO-IEC 9899 http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf:
void free(void *ptr);
If ptr
是空指针,不发生任何操作。
不检查NULL
,它只会添加更多的虚拟代码来读取,因此是一种不好的做法。
但是,您必须always检查NULL
使用时的指针malloc
&公司在这种情况下NULL
意味着出了问题,很可能没有可用的内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)