c++ - 标准库在 C 中释放返回的 char* 变量吗?

标签 c++ c malloc

我有一个返回 char* 的函数。此 char* 不得被任何其他程序删除或重复使用。我知道在 C++ 中你不会使用 malloc 但你(和我)使用 new 在内存中分配空间。

如果我这样做:

char buffer[100]; //I just sub'ed rbp at least 100bytes+allign

当返回时,这个空间将不再归于当前函数,所以返回这个缓冲区 ptr 是危险的。

总而言之,我想知道为什么 stdio 和其他一些库可以返回一个字符指针,而我们甚至懒得释放它们?它们是用 malloc 分配的还是只是在堆栈中? 我应该如何实现我的 C(仅)函数以返回一个 安全 的 char 数组?

最佳答案

Why don't you look at the documentation and find out? (您可以在您的计算机上运行 man inet_net_ntop;这是一个在线版本,可能与您的系统略有不同)

RETURN VALUE

On success, inet_net_ntop() returns pres. On error, it returns NULL, and errno is set to indicate the cause of the error.

pres是参数之一。因此它会返回您提供给它的相同指针,除非出现错误。

关于c++ - 标准库在 C 中释放返回的 char* 变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36439090/

相关文章:

c++ - 使用 vector 读取输入文件

c - 在循环条件中使用 strlen() 是否比仅检查空字符慢?

c - 为什么 C 数组声明为 int arr[] 而不是 int []arr?

c - malloc 如何获取比分配更多的数据字节数

c++ - 什么时候不是 constexpr 实际上是 constexpr

c++ - 对位图图像使用 X、Y 坐标

c++ - 在 switch 语句中使用 continue

c - 堆和免费作业

C 复杂的内存泄漏

c - 当我尝试创建 10^5 节点图时,Malloc 失败了,较差的数字工作正常