Est-il correct d'utiliser memcpy() pour copier une structure qui contient un pointeur?

Je pensais à ce sujet l'autre jour, et je suis curieux de savoir si c'est une mauvaise idée...
Permet de dire qu'il n'y est une structure qui contient un pointeur vers un tableau de chaînes.
Serait le memcpy() copie le nom de pointeur sur le tableau dans l'exemple ci-dessous?
Edit: Le mst est inaccessible dans cet exemple.

struct charMap
{ 
  unsigned char * name;   
  unsigned char id;       
};
typedef struct charMap CharMapT;

class ABC
{
  public:
  ABC(){}
  void Function();
  CharMapT* structList;
}

void ABC::Function ()
{
  CharMapT list[] = 
  {
    {"NAME1", 1},
    {"NAME2", 2}, 
    {"NAME3", 3}
  };

  structList = new CharMapT[sizeof(list)];
  memcpy(structList, &list, sizeof(list));
}
Pour le code c++, pourrais-je vous suggérer std::copy au lieu de memcpy et, éventuellement, std::vector au lieu de c style des tableaux?
Et std::string au lieu de chaînes de style c 🙂
Ceci est appelé une copie superficielle.
Ne pouvez pas utiliser std lib. Je suis dans le monde embarqué.
N'ayant pas accès à un conforme compilateur c++ (ou avoir d'autres raisons qui vous empêchent de rédaction de la norme c++) est quelque chose que vous pourriez vouloir mentionner dans votre question.

OriginalL'auteur RLefevre | 2012-11-27