Salut à tous,

je vous explique mon problème. Je réalise une fonction récursive qui cherche dans une chaine de caractère toutes les occurences d'un caractère

voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void TChaine::find_char (int *position, const char s, int b, int end, int l, int uniq)
{
	int i=b;
	for (;i<end;i++)
	{
		if (mChaine[i] == s)
		{
			l++;
			cout << "caractère présent (" << l << ") : " << i << "\n";
			find_char (position, s, (i+1), end, l, uniq);
			*(position+l-1) = i;
			break;
		}
	}
 
	if (i==end)
	{
		position = new int[l];
		cout << "initialisation du tableau success \n";
	}
}
Je ne sais pas si c'est la meilleur manière de procéder, je trouvais intéressant le fait de procéder ainsi! Allocation de la mémoire pour le tableau en fin de parcours, ensuite je le remplis.

Plusieurs questions :

1. Ca plante sur : *(position+l-1) = i;
Pour information le tableau est bien pris en compte lors de son instanciation mais plus lorsque l'on remonte dans la récursivité !?

2. Je me sert de ce tableau à l'exterieur de la fonction. Suis je obligé de desallouer la mémoire ?!