我有一个返回 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/