утечка памяти

Распределяет ли strdup другую зону памяти и каждый раз создает новый указатель?

Например: следующий код приводит к утечке памяти?

void x(char** d, char* s){
    *d = strdup(s);
}

int main(){
    char* test = NULL;
    x(&test, "abcd");
    x(&test, "etc");
    return 0;
}

Ответы на вопрос(3)

Ваш ответ на вопрос