gpt4 book ai didi

c - 我需要在 C 中释放 strerror() 的结果吗?

转载 作者:行者123 更新时间:2023-12-04 16:26:49 24 4
gpt4 key购买 nike

据我了解,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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com