Распределяет ли strdup другую зону памяти и каждый раз создает новый указатель?
Например: следующий код приводит к утечке памяти?
void x(char** d, char* s){
*d = strdup(s);
}
int main(){
char* test = NULL;
x(&test, "abcd");
x(&test, "etc");
return 0;
}