2016-04-06 14 views
0

Ich habe den folgenden Code:Debuggen seg Fehler durch Pufferüberlauf verursacht

if (destIndex < destLen && srcIndex < srcLen) 
    dest[destIndex++] = src[srcIndex++]; 

Dieser Code läuft gut.

Wenn ich das If entferne, stürzt der Code ab.

Wenn ich dann den folgenden Code ausführen

if (destIndex < destLen && srcIndex < srcLen) 
    dest[destIndex++] = src[srcIndex++]; 
else 
    fprintf(stderr, "Buffer Overrun\n"); 

Dann ist dieses ich nie den Ausdruck „Pufferüberlauf“

SO, wie zu debuggen?

Der seg Fehler tritt nur mit Optimierungen auf (keine Debug-Modus) gedreht irgendwo

+0

Sie haben UB irgendwo. Viel Glück ... –

+1

Ein [MCVE] (http://stackoverflow.com/help/mcve) anzeigen. Das Problem liegt irgendwo im Code, den du nicht angezeigt hast. –

+0

@Jacko 'destIndex' wird immer> =' destLen' und/oder 'srcIndex' wird immer> =' srcLen' irgendwo, irgendwie ... (vorausgesetzt, 'destLen' und' srcLen' entsprechen tatsächlich der Anzahl der Elemente in 'dest []' und 'src []') – yano

Antwort

0

Sie haben UB. 'Works in debug, aber nicht release', oder umgekehrt, ist eine massive undefinierte Verhaltensflagge.

Überprüfen Sie alle Ihre Parameter mit Ihrem Debugger :)

Verwandte Themen