问题标签 [strdup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1158 浏览

c - 在 C 中与 getopt 一起使用时,const char * 和 strdup 是否提供相同的功能?

在下面的代码片段中,我可以将 char * 替换为 const char * 并删除 strdup() 函数调用并直接获取 getopt() 设置的 optarg 值吗?建议我使用 const char * 来跳过 strdup 函数的使用。提前感谢帮助。

我真的不明白这样做的必要性。

编辑:感谢您的回答。这真的很有帮助。我将代码修改为 const char * 并跳过了 strdup 调用。

谢谢,丽菊

0 投票
10 回答
419709 浏览

c - strdup() - 它在 C 中做了什么?

strdup()C中函数的目的是什么?

0 投票
7 回答
24680 浏览

c - strdup() 函数

我最近意识到strdup()我在 OS X 上非常喜欢使用的功能不是 ANSI C 的一部分,而是 POSIX 的一部分。我不想重写我所有的代码,所以我想我只是要编写自己的strdup()函数。这并不难,真的,它只是一个malloc()和一个strcpy()。无论如何,我有这个函数,但是如果我编写这个函数并将它链接到我的代码,并且它已经存在于 libc 中,我该怎么办?我的链接器或编译器是否允许我基本上定义我自己的函数版本,还是我必须给它另一个名字?如果有一种方法可以重用相同的名称,那将非常方便,这样如果strcpy()存在于用户的 libc 中,他们就可以使用它,但如果它不存在于他们的 libc 中,他们可以使用我的版本,只需要很少的代码尽可能地改变。

简短版本:

a) 当我编写自己的函数与内置函数同名时会发生什么?

strdup()b) 我能做些什么来避免在没有将我所有的代码重写为 not use的平台上发生不好的事情strdup(),这有点乏味?

0 投票
10 回答
475 浏览

c - 如何更安全地编写这个 C 片段?

我有以下 C 代码片段,必须识别错误并建议一种更安全的编写方法:

所以错误是 strlen 忽略'\0'了字符串的尾随,因此不会为副本分配足够的内存,但我不确定他们在更安全地编写它方面的目的是什么?

我可以使用malloc(strlen(somestring)+1))我假设,但我认为必须有比这更好的方法?


编辑:好的,我已经接受了一个答案,我怀疑我们不会期望 strdup 解决方案,因为它不是 ANSI C 的一部分。这似乎是一个相当主观的问题,所以我不确定我是否有接受其实是最好的。无论如何感谢所有的答案。

0 投票
4 回答
714 浏览

c - 通过引用传递结构并对其进行操作

这是我想出的一些示例代码来玩转结构。请注意我在 setName 中设置名称的方式以及在 setLastName 中设置名称的方式。

两者都有效,但我很好奇这两种方式之间有什么区别?

一种方式比另一种更好吗?

在这个例子中还需要 strdup 吗?如果没有,如果我将 array.name 设置为随机大小的变量而不是字符串文字,是否有必要?

0 投票
2 回答
940 浏览

c - 使用 strdup 进入 malloc 保留空间

我从来没有使用 malloc 来存储超过值,但我必须使用 strdup 来对输入文件的行进行排序,但我没有办法让它工作。

我虽然使用strdup()获取指向每一行的指针,然后根据保留的行数将每一行放入一个空间中malloc()

我不知道我是否必须这样做,就像保留内存是指向指针的数组一样,我的意思是使用char**然后将每个指向每个 strdup 的指针放入保留空间。

我虽然是这样的:

我不知道之后该怎么办,我什至不知道这是否正确,在那种情况下,我应该怎么做才能将指向字符串的指针存储在缓冲区的位置?

问候

0 投票
2 回答
2200 浏览

c - 内存泄漏释放 g_strdup

我正在尝试释放 g_strdup 但我不确定我做错了什么。

使用valgrind --tool=memcheck --leak-check=yes ./a.out我不断得到:

我尝试了不同的方法来释放,但到目前为止没有成功。我会很感激任何帮助。谢谢

顺便说一句:它编译并运行良好。


0 投票
5 回答
15060 浏览

c++ - strdup 的替代品

我正在为包含名称的书编写 C++ 类:

我不允许std::string在这个作业中使用。所以这里我使用strdup将参数名称的值复制到构造函数中的 nm 中:

是否有替代方法可以在不使用strdup但使用关键字的情况下实现相同的结果new

0 投票
6 回答
552 浏览

c - 这个 c strdup 代码有什么问题?

考虑这段代码:

我希望它输出 "string1\nstring2\n" 但是 str1 和 str2 保持为空。我究竟做错了什么?

0 投票
3 回答
2774 浏览

c - 在字符串文字上使用 strdup 的优点和缺点

我想清楚以下代码的所有优点/缺点:

字符串1:

  • 可以修改字符串的内容

字符串2:

  • 您不必使用 free()
  • 快点

还有其他区别吗?