(char *)__strdup 在 c 中做什么

what does (char *)__strdup do in c

int __cdecl sub_920(char *s1)
{
  void *v1; // esi
  char *ptr; // esi
  int v3; // edi

  v1 = off_2048;
  strlen((const char *)off_2048);
  ptr = (char *)__strdup(v1);
  memfrob(ptr);
  v3 = strcmp(s1, ptr);
  free(ptr);
  return v3;
}

这段代码是由 IDA 编写的,我不确定 ptr = (char *)__strdup(v1); 实际上做了什么?

如此处所示:http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/baselib---strdup-1.html

__strdup -- alias for strdup

strdup 的作用可以在这个答案中阅读:

简短的版本是,它创建作为参数传递的字符串的副本和 returns 指向副本的指针。

strdup returns char * 所以我看不出明确类型转换的意义,除了开头的 ___ 部分可能会建议用户strdup 的定义版本已被类型转换。

反正它是用来复制字符串的。