据我了解,strerror(errno)
返回对应错误的字符串形式errno
。那么,当我使用完函数后,是否需要释放函数的返回结果呢?
你不仅不need to; you must not。你唯一可以传递的东西free
是指向您获得的内存的指针malloc
或指定返回内存的函数malloc
或“好像通过malloc
”。规范中没有这样的文字strerror
,因此传递它返回的字符串free
会产生未定义的行为。特别是,如果实现使用malloc
为了在内部获取内存,您需要从其下方释放该内存,从而导致其执行释放后使用或双重释放,这是一些最危险的内存错误类型。
在实践中,strerror
通常从 libc 返回不可变字符串.rodata
或来自mmap
ped 翻译文件,并且该错误很可能会立即被捕获为崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)