Bonjour à tous,
Dans une appli MFC de browser d'images, j'ai un plantage en release et pas en debug. Pour localiser le bug, j'ai utilisé des Beep() dans mon code et là, stupeur, le plantage disparaît ! Il y a en particulier une ligne où un unique Beep() avec de mauvais paramètres (voir code ci-dessous) évite le crash.
J'ai essayé de remplacer le Beep() par un Sleep(), pensant à un problème de synchronisation mais le plantage réapparaît.
Quelqu'un a-t-il déjà eu ce problème ? D'où peut venir ce comportement ? Problème de mémoire, synchronisation, autre... ?
Je peux expliquer un peu plus le code de cette fonction si nécessaire.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 long CImageBrowser::DisplayImagesRange(long StartIndex, long StopIndex) { long returnValue = 0; long range = StopIndex - StartIndex; if(range < 0 || StartIndex < 0 || StopIndex < 0 ) return -1; if(StartIndex >= m_PathesArray.GetSize()) { FreeDisplay(); //Update only the images side InvalidateRect(m_rBrowserRect); SetScrollInfo(0); return -1; } if(range > m_Sizes.m_Nb_Visible_Vignettes) returnValue = ResizeRange(StartIndex,StopIndex); if(StopIndex > m_PathesArray.GetSize()) returnValue = ResizeRange(StartIndex,StopIndex); if(returnValue < 0) return returnValue; FreeDisplay(); SetScrollInfo(0); //////////// Beep(0,0); //normalement, le premier paramètre (fréquence) //doit être entre 37 et 32767 //////////// //load images for(int i=StartIndex;i<StopIndex;i++) DisplayDefect(m_PathesArray.GetAt(i),i-StartIndex); //Update only the images side InvalidateRect(m_rBrowserRect); m_DisplayedNumber = m_Sizes.m_Nb_Visible_Vignettes; if(m_FirstImageIndex > m_DefectNumber - m_Sizes.m_Nb_Visible_Vignettes) m_DisplayedNumber = m_DefectNumber - m_FirstImageIndex; SetSelection(0,0); return 0; }
Partager