что делает (char *) __strdup в c - PullRequest
       42

что делает (char *) __strdup в c

0 голосов
/ 09 сентября 2018
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);

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

strdup возвращает char *, поэтому я не вижу смысла в явном приведении типов, кроме того, что часть ___ в начале может предлагать пользовательскую версию strdup, которая была преобразована в тип.

В любом случае используется для дублирования строки.

0 голосов
/ 09 сентября 2018

Как можно прочитать здесь: http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/baselib---strdup-1.html

__ strdup - псевдоним для strdup

Что strdup можно прочитать в этом ответе: https://stackoverflow.com/a/252802/6699433

Краткая версия: она создает копию строки, переданной в качестве аргумента, и возвращает указатель на копию.

...