Je suis assez nouveau pour les pointeurs et je suis assigné à faire cette tâche de doublage de tableau mais chaque fois que j'exécute mon code, j'obtiens une erreur Segmentation Fault (Core Dumped). Quelqu'un peut-il regarder mon code et me dire d'où vient l'erreur et ce que je peux faire pour y remédier?Erreur de segmentation (core Dumped) C++ - pointeurs
Je suis très coincé et toute aide serait grandement appréciée.
code:
int size = length;
string *new_array = NULL;
string *tmp_array = new string[50];
for(int k=0; k<50; k++)//Initial array copying.
tmp_array[k] = wordArray[k];
for(int i=0; i<=1; i++)//Array range 0 to n-1
{
new_array = new string[size*2];
for(int j=0; j<size; j++)//Array range 0 to n-1
{
new_array[j]=tmp_array[j];
new_array[j+size]="empty";
}
delete[] tmp_array; //Deleting old array
size=size*2;
}
delete[] tmp_array;// To free memory
cout<<new_array[x]<<endl;
Il erreur est quelque part là-dedans. Il n'y a pas d'autre référence de pointeur dans le code.
Merci
Votre première boucle 'for' aurait un dépassement de tampon. En outre, c'est trop compliqué pour allouer simplement plus d'espace pour un tableau. Deux appels à 'new []' pour le faire? Et pourquoi ne pas simplement utiliser 'std :: vector'? Dans tous les cas, veuillez poster un [mcve]. – PaulMcKenzie
Préférez utiliser des pointeurs intelligents au lieu de pointeurs réguliers. Préférez 'std :: vector' aux tableaux dynamiques. –
'pour (int i = 0; i <= 1; i ++) // plage de gamme 0 à n-1' le commentaire LIES! * LIIIIEEESSS! * Vous obtenez deux itérations: i = 0 et i = 1. Après i> 1 et sort. Sinon, lancez le débogueur de votre IDE et commencez à passer votre code. Quelques bonnes raisons de faire ceci: 1. Savoir comment utiliser les débogueurs vous fera gagner énormément de temps à long terme. 2. Cinq bucks indique que le débogueur vous montrera exactement où est le problème et, si vous jetez un oeil à l'état de vos variables quand cela arrive, exactement comment cela se passe. – user4581301