Ho un'eccezione numerica in release, ma funziona correttamente in debug

Guido Pedrotto 0 Punti di reputazione
2025-04-03T08:51:03.83+00:00

In questo esempio di codice, t.MemSogliaBassa è UInteger type; il suo valore è maggiore di 65535.

iCompiled.operando() è un array di ushort

Codice eseguito:

iCompiled.operando(4) = CUShort(t.MemSogliaBassa)

iCompiled.operando(5) = CUShort(t.MemSogliaBassa >> 16)

Eseguendo il codice in Debug, iCompiled.operando(4) e iCompiled.operando(5) hanno i valori attesi.

Eseguendo il codice in Release, la linea iCompiled.operando(4) = CUShort(t.MemSogliaBassa) genera eccezione numerica, mandando in crash il programma

La soluzione è stata: iCompiled.operando(4) = CUShort(t.MemSogliaBassa) => iCompiled.operando(4) = CUShort(t.MemSogliaBassa And &HFFFFUI)

Ora, se ushort genera eccezione se l'argomento non è un oggetto System.UInt16, dovrebbe farlo sia in debug che in release!!!!

Tecnologie per sviluppatori | Visual Studio | Altro
{count} voti

Risposta

Le risposte possono essere contrassegnate come risposte accettate dall'autore della domanda. Ciò consente agli utenti di sapere che la risposta ha risolto il problema dell'autore.