c - 我需要在 C 中释放 strerror() 的结果吗?
问题描述
据我了解,strerror(errno)
返回错误对应的字符串形式errno
。在这种情况下,我是否需要在使用完函数后释放函数的返回结果?
解决方案
你不仅不需要;你不能。您可以传递的唯一内容free
是指向您获得的内存的指针malloc
或指定返回内存的函数,malloc
或“好像通过malloc
”获得的内存。的规范中没有这样的文本strerror
,因此传递它返回的字符串free
会产生未定义的行为。特别是,如果实现在malloc
内部使用来获取内存,您会从它下面释放该内存,导致它执行释放后使用或双重释放,这是一些最危险的内存错误类型。
在实践中,strerror
通常从 libc.rodata
或从mmap
ped 翻译文件返回不可变字符串,并且很可能该错误会立即被捕获为崩溃。
推荐阅读
- reactjs - Firebase Auth UserCredential - 引用一个值,但被用作一种类型
- python - python中的时间日期格式不匹配
- kubernetes - Kubernetes 服务集群是特定的,还是服务可以跨集群?
- mysql - MySQL 无法从 jq 生成的 CSV 中检测到换行符
- http - 使用自定义动词 Golang 解析请求正文
- prolog - 为什么这个 Prolog 程序返回真假?
- docker - MediaWiki docker image - 如何正确设置
- python - Python使用列表中的项目迭代地创建过滤器表达式
- algorithm - 冒泡排序的时间复杂度
- c - 如何在 C 中打开相对于可执行文件位置的文件?