Goedendag allemaal
Voor mijn profielwerkstuk werk ik aan een programma dat tekstbestanden moet comprimeren. Dat werkt allemaal prima, maar ik loop tegen 1 gigantisch probleem aan. In mijn programma wordt nogal veel met grote strings tussen functies geschoven. Normaal werkt dit prima, maar af en toe krijg ik na het einde van de ene functie,. nog voor het begin van de andere functie (onderzocht d.m.v. cout-instructies) een segmentatie error. Nou weet ik dat een segmentatie-error hoort op te treden als je variablen door de war haalt, maar in dit geval is er niks met een variable whatsoever.
Ik heb een tijd gedacht dat de fout aan de return-instructie lag, maar ook een functie die geen waarde terug geeft (void functie(argumenten)) geeft een segmentatie error. Na veel gepuzzel ben ik er achter gekomen dat er stukjes compleet andere, allang uitgevoerde en correcte code zijn die het probleem veroorzaken. Er zit geen patroon of overeenkomst in die stukjes en het is compleet onvoorspelbaar of een stuk code een segmentation error zal veroorzaken voordat het gebeurt. Het verwijderen van die stukjes lost het probleem op, maar dat wil ik natuurlijk niet, ik weet ook lang niet altijd welk stukje het probleem vormt.
Het enige dat de stukjes in het gemeen hebben is dat ze data in de grote string aanpassen, verwijderen of toevoegen. Aangezien de hele functie daarom draait kan ik moeilijk dat er uit gaan slopen. Dan heb ik het nog niet eens er over dat ik in 80% van de gevallen niet weet welk stukje het probleem veroorzaakt.
Wat doe ik fout? Het ligt niet bij de return-queries, niet bij het echte aanpassen van de data (dan zou ik veel eerder een segmentation error moeten krijgen, niet pas na het beeindigen van de functie), het ligt niet bij de ontvangst van de data uit de functie (want ook als er geen data wordt teruggegeven gaat het fout). Het enige dat ik kan verzinnen is dat de inhoud van de string een probleem vormt, maar wat kan daar fout aan zijn?
Op google zoeken helpt me niet veel, de React-search maakt me niet wijzer, mijn boek biedt geen uitkomst. Ik zou eerlijk gezegd niet eens weten wat nou een goede beschrijvende zoek-query zou moeten zijn, 'C++ segmentatie fout' (of 'segmentation error') geeft niets terug dat hier op slaat... Ik hoop dat een van de die-hard coderts hier het probleem herkent
[edit] ik code onder linux (SuSe 8.2) met de G++ compiler uit GCC 3.2
Voor mijn profielwerkstuk werk ik aan een programma dat tekstbestanden moet comprimeren. Dat werkt allemaal prima, maar ik loop tegen 1 gigantisch probleem aan. In mijn programma wordt nogal veel met grote strings tussen functies geschoven. Normaal werkt dit prima, maar af en toe krijg ik na het einde van de ene functie,. nog voor het begin van de andere functie (onderzocht d.m.v. cout-instructies) een segmentatie error. Nou weet ik dat een segmentatie-error hoort op te treden als je variablen door de war haalt, maar in dit geval is er niks met een variable whatsoever.
Ik heb een tijd gedacht dat de fout aan de return-instructie lag, maar ook een functie die geen waarde terug geeft (void functie(argumenten)) geeft een segmentatie error. Na veel gepuzzel ben ik er achter gekomen dat er stukjes compleet andere, allang uitgevoerde en correcte code zijn die het probleem veroorzaken. Er zit geen patroon of overeenkomst in die stukjes en het is compleet onvoorspelbaar of een stuk code een segmentation error zal veroorzaken voordat het gebeurt. Het verwijderen van die stukjes lost het probleem op, maar dat wil ik natuurlijk niet, ik weet ook lang niet altijd welk stukje het probleem vormt.
Het enige dat de stukjes in het gemeen hebben is dat ze data in de grote string aanpassen, verwijderen of toevoegen. Aangezien de hele functie daarom draait kan ik moeilijk dat er uit gaan slopen. Dan heb ik het nog niet eens er over dat ik in 80% van de gevallen niet weet welk stukje het probleem veroorzaakt.
Wat doe ik fout? Het ligt niet bij de return-queries, niet bij het echte aanpassen van de data (dan zou ik veel eerder een segmentation error moeten krijgen, niet pas na het beeindigen van de functie), het ligt niet bij de ontvangst van de data uit de functie (want ook als er geen data wordt teruggegeven gaat het fout). Het enige dat ik kan verzinnen is dat de inhoud van de string een probleem vormt, maar wat kan daar fout aan zijn?
Op google zoeken helpt me niet veel, de React-search maakt me niet wijzer, mijn boek biedt geen uitkomst. Ik zou eerlijk gezegd niet eens weten wat nou een goede beschrijvende zoek-query zou moeten zijn, 'C++ segmentatie fout' (of 'segmentation error') geeft niets terug dat hier op slaat... Ik hoop dat een van de die-hard coderts hier het probleem herkent
[edit] ik code onder linux (SuSe 8.2) met de G++ compiler uit GCC 3.2