Bonjour tout le monde,

J'ai encore une bizarrerie :
- Lorsque j'exécute un code en mode release, il n'y a pas de problème.
- Lorsque j'exécute le même code en mode debug en ne mettant pas trop de points d'arrêts, il n'y a pas de problème.
- Lorsque j'exécute le même code en mode debug en ne mettant des points d'arrêts juste avant le sprintf() et juste après et encore juste après, il y a un problème.
Le problème est soit que le sprintf n'est pas effectué, soit que l'ordi tourne à fond, soit qu'il plante.

J'ai trouvé une solution. J'ai décomposé ma fonction en 3 fonctions et cela ne me paraît plus poser plus de problèmes. Mais j'ai voulu comprendre. J'ai alors dupliqué la fonction qui posait problème et j'ai enlevé tout ce qui ne posait pas de problème. Il reste le code suivant. Si on met des points d'arrêts partout, le programme a beaucoup de mal à passer d'un point d'arrêt à l'autre.

Il suffit de changer long long int en int, ou supprimer n'importe quelle ligne de code ou remplacer les variables par leurs valeurs pour que ça fonctionne.
Il met une trentaine de secondes à chaque étape et surtout, lorsqu'il s'est enfin arrêté au point d'arrêt après le sprintf, il n'a pas exécuté l'instruction ; il faut encore attendre pour que l'instruction soit prise en compte (alors qu'il est déjà arrêté au point d'arrêt).

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
22
23
24
25
26
 
void test(const char* string1)
{
  long long int  k,s,cnt,beg,end,op,s1,s1E;
  char*          ptr;
  char*          string2 = new char[100];
 
  sprintf(string2,"diff(%s)",string1);
  k   = 0;
  s   = 0;
  cnt = 0;
  beg = 5;
  end = 0;
  op  = 0;
  s1  = 13;
  s1E = 11;
  ptr = NULL;
  char op1 [s1 ]; memcpy(op1 ,&string2[beg]  ,s1 -1);
  char op1E[s1E]; memcpy(op1E,&op1[s1 != s1E],s1E-1);
}
 
int main(int argc, char *argv[])
{
  test("12345678*123456");
  return 1;
}
Quelqu'un a-t-il déjà connu ce genre de problème svp ?

Merci à tous qui lisez mes messages et qui y répondez, sachant que je suis le seul à poser des questions...