问题标签 [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.
c - 使用 strdup 从字符串转换的 c++ char* 不等于原始原始字符串
我想知道为什么将字符串转换为 char* 似乎会使新的 char* 不等于它来自的文字字符串。
如果我有:
产生:
所以转换后的 char* 仍然等于它来自的原始字符串。但由于某种原因char* s_convert
,它不等于它来自的文字字符串,尽管原始字符串string s
。
为什么会这样?有没有更好的方法可以将字符串转换为不会导致这种情况的 char*?
strdup - 将 _strdup 替换为 _strdup
我在 VS2013 上收到以下编译错误:
所以它要求我用同样的东西替换“_strdup”。
我看到很多错误要求用 strdup 替换 _strdup (POSIX),但不是那样。
同样的代码也适用于许多其他人的机器(通常具有相同的项目属性)。所以我认为我不需要更改代码,而是我的 PC 上的一些东西。
任何的想法 ?
c - C - 尝试使用 strdup 时出现段错误
我过去使用 strdup() 的方式与在这里使用它的方式相同。我将 token2 传递给 strdup,它的类型为 char *,其中有一个有效的指针,但是当我尝试运行“name = strdup(token2);”行时 我的程序段错误,我很不确定为什么。如果有人能够帮助我,将不胜感激。我也意识到我的代码还没有返回正确的类型,我仍在努力编写所有代码。
c - = 的操作数具有非法类型
我对C很陌生(多年后)。我正在使用 lcc64 并有以下声明
我不知道为什么我会收到错误
有什么建议么?
c - list[idx] = strdup(tok[1] +tok[2]) 或初始 malloc 到列表的大小 -C
我有一个在 valgrind 中写入无效的代码。我试图做的是strcat我malloc'd的idx。我想知道 strdup() 的大小,以便我可以在 char *argv[] 中的标记数之间放置空格。
这是一小段代码
如果您对如何从 getline 收集令牌的大图感兴趣,您可以在此处查看问题https://stackoverflow.com/questions/27394313/getline-loop-for-stdin-has-segmentatoin-fault-after-每个循环-c
这是我目前能做的最好的
解决它
c - 在 C 中复制作为参数传递给函数的字符串
我想不出我的问题的正确标题,所以就这样吧。我正在尝试学习 C,以下代码来自我正在关注的教程。
我的问题是Person_create
功能为什么我们要复制name
到新的内存位置who->name
。为什么我们不能只who->name
指出*name
提供给函数的相同位置。
此外,如果我们直接分配了*name
to who->name
do 的地址,我们必须将其释放到Person_destroy
.
c - 使用 SDL_strdup 和类似方法获取文件名的问题
我正在尝试使用 SDL2 创建一个程序。
在代码的某个部分,我正在编写函数来获取给定目录路径中所有当前文件的名称(并将它们保存在内存中),以便在另一个函数中,我可以检查指定文件是否最后出现检查目录的那一刻。我正在使用dirent.h
以满足我的需求,但我遇到了一些问题:
- 所有文件都被正确捕获
readdir()
(没有例外),但是在使用后它们并不总是正确复制到内存中SDL_strdup()
(代码如下)。 - 我使用
SDL_malloc()
//尽可能跨平台以避免在移植代码时出现问题(因为我已经读过 strdup 不是 C 标准)SDL_realloc()
。SDL_strdup()
这是我的代码:
}
输出不同。当它不崩溃时,我要么正确复制所有文件名,要么复制大部分文件名,其中一些不包含任何内容或纯乱码(如评论);如果它确实崩溃了,有时我在使用时会出现 Segfault,有时在使用SDL_strdup()
时会出现 Segfault closedir()
。
我什至考虑过通过给它提供文件数量(感谢另一个函数)来SDL_realloc()
用初始内存分配交换场景,但我遇到了同样的问题。filelist->files
任何将我的编码风格更改为更具防御性的风格的建议(因为我确实相信这种风格相当危险)将不胜感激,尽管我已经为这种情况尽我所能。我目前正在使用内置 gcc Apple LLVM 6.0 (clang-600.0.56) 开发 Mac OS X。
c - 复制char数组时strdup是否添加了'\ 0'?
如果 src 数组不包含一个,我想知道 strdup 是否在新数组的末尾添加一个 '\0' ?
假设我们有一个包含由这种 malloc 分配的“hello”的数组
所以 5 个字节对应 5 个字符。
我猜 src 字符串没有为 '\0' 接收到足够的内存。
在这种情况下应该发生什么?
c - char *str="this is a string" from char *str = strdup("this is a string") 在 C 中有什么区别
以下代码有什么区别:
char* str = "this is a string"
从这个:
char* str = strdup("this is a string")
使用场景?
c - 从 flex/bison 中释放 strdup() 中分配的字符串
我有使用strdup()
.
strdup()
分配内存并将输入字符串复制到其中并返回(strdup() - 它在 C 中做了什么?),所以我想当我不再需要它时需要释放它。
来自这篇文章:什么时候在 BISON 中调用 %destructor?,我%destructor { free($$); printf("free");} STRING
在yacc文件中添加了。
但是,free()
即使yylval.sval
分配了从strdup()
.
可能有什么问题?如何释放 flex/bison 中分配的字符串?
添加
我考虑使用静态分配的 sval 如下:
弹性代码现在变为(如果 yytext 小于 100 字节,则没有检查代码):
我不确定这种方法是否是人们通常使用的方法。
添加2
对于我的申请,简单的实习是可以的。
对于 yacc 代码