copie d'un tableau de char*
Bonjour,
je sais que ce n'est pas terrible d'utiliser les char*, qu'il vaudrait mieux utiliser les string, mais j'utilise une librairie de fonctions qui utilise les char*.
J'essaie donc de copier un const char** dans un tableau de char**. Mon code est le suivant, il fonctionne. Je pensais être obligé de rajouter le code en commentaires pour préciser la taille de chaque char* de mon tableau de char*. Or, non seulement ça n'est pas nécessaire, mais ça ne marche pas quand je décommente ces lignes.
Quelqu'un peut il m'expliquer pourquoi ? Mon code est il correct ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#include <iostream>
using namespace std;
main()
{
const char* tab[]={ "baba", "bibi", "bobo" };
char ** copie_tab;
int size_tab;
size_tab=sizeof(tab)/sizeof(char*);
cout << "taille de tab : " << size_tab << endl;
copie_tab=new char*[size_tab];
for (int i=0;i<size_tab;i++)
{
// copie_tab[i]=new char[sizeof(tab[i])/sizeof(char)];
copie_tab[i]=const_cast<char *> (tab[i]);
}
for (int i=0;i<size_tab;i++)
cout << tab[i] << " et " << copie_tab[i] << endl;
//for (int i=0;i<size_tab;i++)
// delete [] copie_tab[i];
delete [] copie_tab;
} |
Question subsidiaire : que se passe-t-il en mémoire ? Les chaînes de caractères sont elles recopiées, ou mon tab_copie ne fait il que pointer sur les éléments de mon tableau initial (si c'est le cas, est ce problématique, puisque mon tableau d'origine est constant?) ?
Merci d'avance