据我了解,strerror(errno)
返回对应于 errno
的错误的字符串形式.在这种情况下,我是否需要在使用完函数后释放函数的返回结果?
最佳答案
你不仅不需要;你绝不能 .唯一可以传递给free
的东西是指向您通过 malloc
获得的内存的指针或指定返回由 malloc
获得的内存的函数或“好像来自 malloc
”。 strerror
的规范中没有这样的文字,所以传递字符串它返回到 free
会产生未定义的行为。特别是,如果实现使用 malloc
为了在内部获取内存,您将从它下面释放该内存,导致它执行释放后使用或双重释放,这是一些最危险的内存错误类型。
在实践中,strerror
通常从 libc .rodata
返回不可变的字符串或来自 mmap
ped 翻译文件,并且该错误很可能会立即被捕获为崩溃。
关于c - 我需要在 C 中释放 strerror() 的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62272781/