J'essaie actuellement d'allouer la même quantité de mémoire pour un double pointeur. Je prends un caractère ** et je veux utiliser un tri à bulles sur ce personnage **. Donc, je crée un temp char ** et maintenant je me demande comment allouer correctement de la mémoire afin que je puisse retourner ce char temp ** à une autre méthode.allocation de mémoire double pointeur
Je sais que la façon dont j'alloue en ce moment n'a pas l'air juste et ça ne marche certainement pas ... sinon je ne poserais pas cette question. Si quelqu'un pouvait répondre avec quelques conseils utiles, je l'apprécierais grandement!
char** bubble_sort(char **filenames, int n)
{
int i;
char **new_list;
new_list = malloc(sizeof(filenames));
for (i = 0; i < n; i++)
{
// malloc(file_list.size * sizeof(int));
new_list[i] = filenames[i];
}
for (i = 0; i < n; i++)
{
printf("%d: %s\n", i, new_list[i]);
}
int x;
int y;
for(x=0; x<n; x++)
{
for(y=0; y<n-1; y++)
{
if(new_list[y]>new_list[y+1])
{
char *temp = new_list[y+1];
new_list[y+1] = new_list[y];
new_list[y] = temp;
}
}
}
for (i = 0; i < n; i++)
{
printf("%d: %s\n", i, new_list[i]);
}
return new_list;
}
Ma seule recommandation est que vous utilisiez std :: vector. Se déplacer autour de char ** et jouer avec sizeof sans utiliser un seul contrôle d'assertion est une combinaison trop fréquente, qui conduit presque toujours à des bogues désagréables. Et, "malloc"? Ce n'est presque jamais nécessaire en C++, d'après mon expérience. Utilisez new [] et delete [] si vous avez vraiment besoin d'allouer des tableaux raw au lieu d'utiliser std :: vector - ce que vous devriez faire de toute façon. –
et si je dois retourner un caractère **? (dans ce cas je fais ... je travaille avec un SDK et un char ** est requis) – Brandon
faites toutes vos opérations avec des conteneurs STL, puis copiez le résultat dans un tableau de char correctement alloué.par exemple: "char ** pp = new char [1000] [1000];", mais pas avec malloc! –