size_t calc_segcnt(size_t *ret_segcnt)
{
size_t segcnt;
...
while( cond )
{
segcnt = blablabla
}
if( ret_segcnt )
*ret_segcnt = segcnt;
...
}
Przy wyłączonej optymalizacji kompilacja przejdzie bez ostrzeżeń. Po włączeniu optymalizacji otrzymacie:
warning: “segcnt” may be used uninitialized in this function
Inicjalizacja segcnt jest zalezna, od „cond” który może się nie wykonać, a puzniej mamy warunkowe przypisanie pod adres wyłuskany ze wskaznika. Podczas optymalizacji widocznie kompilator chce uprościć kod i wykrywa niezainicjalizowana zmienna. Brak optymalizacji widocznie nie wywołuje kodu sprawdzającego ścieżki inicjalizacji.
1 komentarz:
To ja już wolę kodować przy pomocy języka A.
http://nonsensopedia.wikia.com/wiki/J%C4%99zyk_A
Prześlij komentarz