问题标签 [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 投票
2 回答
227 浏览

c - 线程问题:存储在堆中的值

我有线程问题。

我正在定义一个全局变量、一个初始化为 NULL 的 char * 和一个互斥锁。

然后我初始化我的互斥锁:

然后我创建一个新线程:

在该函数内部,我使用 strdup 为 minURLTime 分配空间并从链接中复制一个字符串:

当我使用堆时(通过调用malloc的strdup),我不明白为什么minURLTime在线程退出之前不是NULL,但是它是NULL。

一旦调用 pthread_exit,尽管 minURLTime 是一个通过 strdup(调用 malloc)分配的全局变量,它似乎为 NULL。没看懂,谁能解释一下?

非常感谢,

编辑:

再详细一点。

从主():

执行线程函数:

fprintf 没有被执行(在返回 pthread_exit 之前)。

执行请求功能:

这可能会有所帮助。它在线程退出之前在 executeRequest 内部打印,但不在 executeThread 内部打印。

杰里

0 投票
4 回答
8639 浏览

c - 使用 strdup 后无法释放内存

gcc 4.5.1 c89

我正在尝试释放一些内存。但是,当我检查 valgrind 时,内存并没有被释放。我想知道我做错了什么。

我有以下结构:

我创建了这个结构的对象:

我为结构分配了一些内存。

为其分配一些数据

然后我尝试释放所有分配的内存:

我从 valgrind 得到以下输出。

不知道为什么内存没有被释放?

非常感谢您的任何建议,

0 投票
2 回答
1345 浏览

g++ - 用于显示 strdup 等函数的编译器标志

我已经获得了一些我必须在我正在上课的课程中完成的项目的入门代码。该代码在大学计算机上编译得很好,但是当我尝试在自己的计算机上编译代码时,由于函数调用 strdup 出现错误。据我所知,这是因为 strdup 不是 ISO c99 函数(https://bugzilla.redhat.com/show_bug.cgi?id=130815)。我应该如何去编译代码?我想我只需要添加一些额外的编译器标志,但我不确定是哪些。如果您需要我运行的信息g++ -v,这里是输出:

0 投票
3 回答
1078 浏览

c - icu unicode中是否有等效的strdup?

这个问题是不言自明的。我正在使用 C API。

0 投票
4 回答
14513 浏览

gcc - 使用 c++0x 在 g++ 上出现 strdup 错误

我有一些 C++0x 代码。我能够在下面重现它。下面的代码可以正常工作,-std=c++0x但我的真实代码不需要它。

如何在 C++0x 中包含 strdup?使用 gcc 4.5.2

注意我正在使用mingw。我尝试包括 cstdlib、cstring、string.h 并尝试使用 std::。没运气。

代码:

0 投票
3 回答
2991 浏览

c# - Vb.Net 将 StrDup 转换为 C#.net

我有这行代码:

这段代码在 C# 中的等价物是什么?我似乎找不到它。

0 投票
7 回答
51310 浏览

c++ - strdup 还是 _strdup?

当我strdup在 Microsoft Visual C++ 中使用时,它会警告我:

警告 C4996:“strdup”:不推荐使用此项目的 POSIX 名称。而是使用符合 ISO C++ 的名称:_strdup。详细信息请参见在线帮助。

因此,它似乎_strdup是正确的。

但是当我_strdup在 GCC (Fedora Linux OS) 中使用时,编译器显示错误:

错误:未在此范围内声明“_strdup”

使用 GCC 和 Linux,编译器不会为strdup.

哪个是正确的 -strdup_strdup

注意:我包含<string.h>在我的代码中。

0 投票
3 回答
337 浏览

c - 类型转换字符串和 strdup

如果输入的 const 字符串以某种方式被修改(导致 C 编译器警告),处理它的最佳方法是什么 - 将其类型转换为新变量然后使用它或复制它并使用它然后释放它. 或者有没有其他方法来处理这种情况。请建议。任何帮助,将不胜感激。

//类型转换

//复制和免费

编辑:它是一个 C 编译器;不是 C++。我不确定在类型转换中,s2 是字符串 s1 的新副本还是指向原始字符串 s1?

感谢您的回答。我还有一个疑问——

上述分配有效吗?

0 投票
3 回答
1835 浏览

string - 下面使用 strdup() 会导致 C 中的内存泄漏吗?

char* XX (char* str) { // 用 str CONCAT 现有字符串,并返回给用户 }

我通过以下方式调用该程序:

XX ( strdup("CHCHCH") );

这会导致泄漏而不释放strdup()生成的内容吗?

free 的结果不太可能XX() 完成这项工作。

(请用 C 和 C++ 告诉我,谢谢!)

0 投票
2 回答
792 浏览

c - strdup 错误:“操作正在进行中”

错误是什么意思?我只需要返回从 redis 命令获得的值。

即使我用调试器慢慢地单步执行它也会发生这种情况(人们会假设任何阻塞操作都早已完成)。Redis 特定的错误字符串为空,reply->str 具有我想要的正确字符串。