gpt4 book ai didi

c - 悬挂指针..在一本书中?

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:34 25 4
gpt4 key购买 nike

我可能遗漏了什么但只是想问一下..我在 Advanced Linux programming 一书中找到了这段代码:

    char* get_self_executable_directory ()
{
int rval;
char link_target[1024];
char* last_slash;
size_t result_length;
char* result;
/* Read the target of the symbolic link /proc/self/exe. */
rval = readlink (“/proc/self/exe”, link_target, sizeof (link_target));
if (rval == -1)
/* The call to readlink failed, so bail. */
abort ();
else
/* NUL-terminate the target. */
link_target[rval] = ‘\0’;
/* We want to trim the name of the executable file, to obtain the
directory that contains it. Find the rightmost slash. */
last_slash = strrchr (link_target, ‘/’);
if (last_slash == NULL || last_slash == link_target)
/* Something strange is going on. */
abort ();
/* Allocate a buffer to hold the resulting path. */
result_length = last_slash - link_target;
result = (char*) xmalloc (result_length + 1);
/* Copy the result. */
strncpy (result, link_target, result_length);
result[result_length] = ‘\0’;
return result;
}

我的问题是,这个函数不是返回悬空指针吗?

最佳答案

它返回一个指针并期望释放将在客户端代码中完成。当您看到返回指针的函数时,您总是必须问自己(实际上是作者......)内存的所有权(即释放它的责任)是否传递给函数的客户端,如果是,它应该如何传递获得自由。

关于c - 悬挂指针..在一本书中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595241/

25 4 0
文章推荐: css - 在没有 JavaScript 的情况下单击时更改
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com