小智 12
有三种可能的情况:
free( NULL ); // does nothing, so always works
free( malloc(42) ); // does something, always works
free( 666 ); // undefined behaviour - returned value would be meaningless
Run Code Online (Sandbox Code Playgroud)
因此,测试没有任何free()意义.
R..*_*R.. 10
没有返回值,因为没有失败的情况.free永远成功.没有什么可以检查的.
请注意,这假设您正确使用它.如果传递给free作为参数无效的free指针,例如未初始化的指针,指向已释放对象的指针,或指向未获取的对象的指针malloc,则程序具有未定义的行为.这不是可报告的错误; 相反,它意味着什么事情都可能发生.