gcc szivás

Kezdőlap Fórumok Programozás gcc szivás

4 bejegyzés megtekintése - 1-4 / 4
  • Szerző
    Bejegyzés
  • #2071056
    pointux
    Felhasználó

      Így megint (és minden körülmények között) megy:

      Code:
      if ( ( p [ i ] + p [ j ] ) == 2 )  p2 [ k ] = 0;
      #2071057
      Morzel
      Felhasználó

        Mi a helyzet a típusokkal?

        #2071058
        pointux
        Felhasználó

          Közben rájöttem, hogy miért van.
          A visszakapott void értékeket rosszul konvertáltam:
          type *type_p = ( type* ) ( st->void_p );
          majd
          type_p [ x ]…; (ennél a résznél bukott ki a hiba)

          Így viszont működik:
          ( ( type* ) st->void_p ) [ x ]…;

          Hogy az első megoldás, miért nem működik, azt nem tudom…

          #1884162
          csaba
          Felhasználó

            gcc/g++ (3.4.6) -O3 működik:

            Code:
            p2 [ k ] = 0;

            if ( ( p [ i ] + p [ j ] ) == 2 ) {
            p2 [ k ] = 0;
            }

            gcc/g++ (3.4.6) -O3 seggfaultol, alig több, mint féltávnál (pl.: p ill. p2 40000, akkor 32128-nál, ha 160000, akkor 40958-nál):

            Code:
            if ( ( p [ i ] + p [ j ] ) == 2 ) {
            p2 [ k ] = 0;
            }

            gcc/g++ (3.4.6) nem működik:

            Code:
            p2[ k ] = 0;

            if ( ( p [ i ] + p [ j ] ) == 2 ) {
            p2 [ k ] = 0;
            }

            gcc/g++ (3.4.6) seggfaultol, alig több, mint féltávnál:

            Code:
            if ( ( p [ i ] + p [ j ] ) == 2 ) {
            p2 [ k ] = 0;
            }

            Ha k konstans, akkor ugyanez a helyzet.

            Ez utóbbi pedig minden esetben működik:

            Code:
            p2 [ k ] = 0;

            if ( ( p [ i ] + p [ j ] ) == 2 ) {

            }

            Most én vagyok a komplett hülye, vagy ez furcsa?

            Miért fordulhat ez elő?

          4 bejegyzés megtekintése - 1-4 / 4
          • Be kell jelentkezni a hozzászóláshoz.