slot a segmentation

0

problem rozwioazany, dzeiki

jak to naprawic ?

0

Sory, ale nie pomogę, bo zapomniałem dziś mojej magicznej kuli. Z tego wielkiego fragmentu kodu i olbrzymiej ilości informacji jakie dałeś, trochę ciężko coś wywnioskować. Możesz po prostu i albo j dawać za duże i wychodzić poza zakres.

0

Ja strzelam, że i oraz j mają złę wartości i wychodzisz poza zakres tablicy.
Popraw tak (tak będzie bardziej poprawnie):

void MainWindow::zmiana()
{
    if (QPushButton* button = qobject_cast<QPushButton*>(sender()))
           button->setText(QString('X'));
}
0

jeśli 'i' oraz 'j' są polami klasy to po wykonaniu się pierwszych pętli będą one przechowywały wartości wykraczające poza wielkość tablicy. Odwoływanie się w ten sposób w slocie może być niebezpieczne bo ciężej jest kontrolować wartości tych pól. Nie lepiej przekazywać je przez argumenty lub nawet przekazać przez argument sam wskaźnik na button?

0

albo tak jak wyżej kolega pisał - czego nie przeczytałem wcześniej :) W sumie to nawet ładniejsze rozwiązanie.

0

dzieki

0

ale jaja ;)

na moje oko tu jest wszystko ok

moze sie jeszcze ktos wypowie, ja nie wiem

0

wrzuć gdzieś projekt i go udostępnij bo tak do niczego nie dojdziemy :]
poza tym tworzenie QPushButton'ów możesz wywołać w pętli nadrzędnej do tej co wywołujesz connect (przez co pozbywasz się jednej pętli).

0

trzeba bylo zmienic

 
 connect(tab[i][j],SIGNAL(clicked()), this, SLOT(close()));

na

 connect(&tab[i][j],SIGNAL(clicked()), this, SLOT(close())); 

myslalem ze to przejdzie domyslnie i pozniej nie zauwyzelem, dlaczego koniecznie adres tego ?

0

bo przechowujesz obiekty statycznie utworzone czyli musisz przekazać ich adresy. Na przyszłość wrzuć jeszcze deklarację klasy, bo z tego kodu co prawda można było to wywnioskować ale łatwiej byłoby z deklaracji klasy gdyby było widać co przechowuje dokładnie ta tablica (wskaźniki (QPushButton*) czy same obiekty (QPushButton) )

0

czyli mozna powiedziec, ze prawie skonczylem ,co mialem zrobic, nie liczac wyciekow pamieci po wylaczeniu aplikacji

*** glibc detected *** ./PROJEKT: munmap_chunk(): invalid pointer: 0x09f5441c ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b591)[0x1b3591]
/lib/tls/i686/cmov/libc.so.6(+0x6c80e)[0x1b480e]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x45c741]
/usr/lib/libQtGui.so.4(_ZN11QPushButtonD0Ev+0x3d)[0x117b89d]
./PROJEKT[0x804ae7f]
./PROJEKT[0x804ab9c]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x15ebd6]
./PROJEKT[0x804aa91]
======= Memory map: ========
00110000-00125000 r-xp 00000000 08:03 1000571    /lib/tls/i686/cmov/libpthread-2.11.1.so
00125000-00126000 r--p 00014000 08:03 1000571    /lib/tls/i686/cmov/libpthread-2.11.1.so
00126000-00127000 rw-p 00015000 08:03 1000571    /lib/tls/i686/cmov/libpthread-2.11.1.so
00127000-00129000 rw-p 00000000 00:00 0 
00129000-00146000 r-xp 00000000 08:03 108017     /lib/libgcc_s.so.1
00146000-00147000 r--p 0001c000 08:03 108017     /lib/libgcc_s.so.1
00147000-00148000 rw-p 0001d000 08:03 108017     /lib/libgcc_s.so.1
00148000-0029b000 r-xp 00000000 08:03 999858     /lib/tls/i686/cmov/libc-2.11.1.so
0029b000-0029c000 ---p 00153000 08:03 999858     /lib/tls/i686/cmov/libc-2.11.1.so
0029c000-0029e000 r--p 00153000 08:03 999858     /lib/tls/i686/cmov/libc-2.11.1.so
0029e000-0029f000 rw-p 00155000 08:03 999858     /lib/tls/i686/cmov/libc-2.11.1.so
0029f000-002a2000 rw-p 00000000 00:00 0 
002a2000-002d0000 r-xp 00000000 08:03 8607       /usr/lib/libfontconfig.so.1.4.4
002d0000-002d1000 r--p 0002d000 08:03 8607       /usr/lib/libfontconfig.so.1.4.4
002d1000-002d2000 rw-p 0002e000 08:03 8607       /usr/lib/libfontconfig.so.1.4.4
002d2000-002d9000 r-xp 00000000 08:03 8683       /usr/lib/libSM.so.6.0.1
002d9000-002da000 r--p 00006000 08:03 8683       /usr/lib/libSM.so.6.0.1
002da000-002db000 rw-p 00007000 08:03 8683       /usr/lib/libSM.so.6.0.1
002db000-002dd000 r-xp 00000000 08:03 1000560    /lib/tls/i686/cmov/libdl-2.11.1.so
002dd000-002de000 r--p 00001000 08:03 1000560    /lib/tls/i686/cmov/libdl-2.11.1.so
002de000-002df000 rw-p 00002000 08:03 1000560    /lib/tls/i686/cmov/libdl-2.11.1.so
002e1000-002fc000 r-xp 00000000 08:03 1581089    /lib/ld-2.11.1.so
002fc000-002fd000 r--p 0001a000 08:03 1581089    /lib/ld-2.11.1.so
002fd000-002fe000 rw-p 0001b000 08:03 1581089    /lib/ld-2.11.1.so
002fe000-00313000 r-xp 00000000 08:03 14657      /usr/lib/libaudio.so.2.4
00313000-00314000 r--p 00015000 08:03 14657      /usr/lib/libaudio.so.2.4
00314000-00315000 rw-p 00016000 08:03 14657      /usr/lib/libaudio.so.2.4
00315000-00338000 r-xp 00000000 08:03 106645     /lib/libpng12.so.0.42.0
00338000-00339000 r--p 00022000 08:03 106645     /lib/libpng12.so.0.42.0
00339000-0033a000 rw-p 00023000 08:03 106645     /lib/libpng12.so.0.42.0
0033a000-0034d000 r-xp 00000000 08:03 107857     /lib/libz.so.1.2.3.3
0034d000-0034e000 r--p 00012000 08:03 107857     /lib/libz.so.1.2.3.3
0034e000-0034f000 rw-p 00013000 08:03 107857     /lib/libz.so.1.2.3.3
0034f000-00353000 r-xp 00000000 08:03 10130      /usr/lib/libgthread-2.0.so.0.2400.1
00353000-00354000 r--p 00003000 08:03 10130      /usr/lib/libgthread-2.0.so.0.2400.1
00354000-00355000 rw-p 00004000 08:03 10130      /usr/lib/libgthread-2.0.so.0.2400.1
00355000-00392000 r-xp 00000000 08:03 10128      /usr/lib/libgobject-2.0.so.0.2400.1
00392000-00393000 r--p 0003c000 08:03 10128      /usr/lib/libgobject-2.0.so.0.2400.1
00393000-00394000 rw-p 0003d000 08:03 10128      /usr/lib/libgobject-2.0.so.0.2400.1
00394000-0039c000 r-xp 00000000 08:03 1212453    /usr/lib/libXrender.so.1.3.0
0039c000-0039d000 r--p 00007000 08:03 1212453    /usr/lib/libXrender.so.1.3.0
0039d000-0039e000 rw-p 00008000 08:03 1212453    /usr/lib/libXrender.so.1.3.0
003a1000-0048a000 r-xp 00000000 08:03 11080      /usr/lib/libstdc++.so.6.0.13
0048a000-0048b000 ---p 000e9000 08:03 11080      /usr/lib/libstdc++.so.6.0.13
0048b000-0048f000 r--p 000e9000 08:03 11080      /usr/lib/libstdc++.so.6.0.13
0048f000-00490000 rw-p 000ed000 08:03 11080      /usr/lib/libstdc++.so.6.0.13
00490000-00497000 rw-p 00000000 00:00 0 
00497000-0049e000 r-xp 00000000 08:03 1000573    /lib/tls/i686/cmov/librt-2.11.1.so
0049e000-0049f000 r--p 00006000 08:03 1000573    /lib/tls/i686/cmov/librt-2.11.1.so
0049f000-004a0000 rw-p 00007000 08:03 1000573    /lib/tls/i686/cmov/librt-2.11.1.so
004a0000-004a2000 r-xp 00000000 08:03 8707       /usr/lib/libXau.so.6.0.0
004a2000-004a3000 r--p 00001000 08:03 8707       /usr/lib/libXau.so.6.0.0
004a3000-004a4000 rw-p 00002000 08:03 8707       /usr/lib/libXau.so.6.0.0
004a4000-004a7000 r-xp 00000000 08:03 106690     /lib/libuuid.so.1.3.0
004a7000-004a8000 r--p 00002000 08:03 106690     /lib/libuuid.so.1.3.0
004a8000-004a9000 rw-p 00003000 08:03 106690     /lib/libuuid.so.1.3.0
004aa000-00720000 r-xp 00000000 08:03 12218      /usr/lib/libQtCore.so.4.6.2
00720000-00727000 r--p 00275000 08:03 12218      /usr/lib/libQtCore.so.4.6.2
00727000-00728000 rw-p 0027c000 08:03 12218      /usr/lib/libQtCore.so.4.6.2
00728000-00799000 r-xp 00000000 08:03 8969       /usr/lib/libfreetype.so.6.3.22
00799000-0079d000 r--p 00070000 08:03 8969       /usr/lib/libfreetype.so.6.3.22
0079d000-0079e000 rw-p 00074000 08:03 8969       /usr/lib/libfreetype.so.6.3.22
0079e000-007b3000 r-xp 00000000 08:03 11939      /usr/lib/libICE.so.6.3.0
007b3000-007b4000 r--p 00014000 08:03 11939      /usr/lib/libICE.so.6.3.0
007b4000-007b5000 rw-p 00015000 08:03 11939      /usr/lib/libICE.so.6.3.0
007b5000-007b7000 rw-p 00000000 00:00 0 
007b7000-007bb000 r-xp 00000000 08:03 11943      /usr/lib/libXdmcp.so.6.0.0
007bb000-007bc000 r--p 00003000 08:03 11943      /usr/lib/libXdmcp.so.6.0.0
007bc000-007bd000 rw-p 00004000 08:03 11943      /usr/lib/libXdmcp.so.6.0.0
007bd000-007bf000 r-xp 00000000 08:03 1753611    /usr/lib/gconv/UTF-16.so
007bf000-007c0000 r--p 00001000 08:03 1753611    /usr/lib/gconv/UTF-16.so
007c0000-007c1000 rw-p 00002000 08:03 1753611    /usr/lib/gconv/UTF-16.so
007c1000-007c7000 r-xp 00000000 08:03 1212580    /usr/lib/libXrandr.so.2.2.0
007c7000-007c8000 r--p 00005000 08:03 1212580    /usr/lib/libXrandr.so.2.2.0
007c8000-007c9000 rw-p 00006000 08:03 1212580    /usr/lib/libXrandr.so.2.2.0
007c9000-007cd000 r-xp 00000000 08:03 1212489    /usr/lib/libXfixes.so.3.1.0
007cd000-007ce000 r--p 00003000 08:03 1212489    /usr/lib/libXfixes.so.3.1.0
007ce000-007cf000 rw-p 00004000 08:03 1212489    /usr/lib/libXfixes.so.3.1.0
007cf000-00897000 r-xp 00000000 08:03 1581094    /lib/libglib-2.0.so.0.2400.1
00897000-00898000 r--p 000c7000 08:03 1581094    /lib/libglib-2.0.so.0.2400.1
00898000-00899000 rw-p 000c8000 08:03 1581094    /lib/libglib-2.0.so.0.2400.1
00899000-008b1000 r-xp 00000000 08:03 11945      /usr/lib/libxcb.so.1.1.0
008b1000-008b2000 r--p 00017000 08:03 11945      /usr/lib/libxcb.so.1.1.0
008b2000-008b3000 rw-p 00018000 08:03 11945      /usr/lib/libxcb.so.1.1.0Aborted


 

wszedzie zwalniam dynamicznie alokowana pamiec, w ten sposob:

 

tab = new QPushButton*[k];
    for (int i=0; i<k; ++i)
        tab[i] = new QPushButton[k];




for (int i=0; i<k; ++i)
       delete tab[i];

    delete [] tab;

no to jest chyba ok (czy moze po tym jak zaczalem pracowac w Javie, cos mi ucieklo ?)

0

debugger zwraca:

Podproces zatrzymany poniewaz otrzymal on sygnal z systemu opearcyjnego

nazwa sygnalu: SIGABRT
znaczenie sygnalu: Aborted

0
for (int i=0; i<k; ++i)
       delete tab[i];

czy przypadkiem nie:

for (int i=0; i<k; ++i)
       delete [] tab[i];

?

0

sprobowalem, ale nic to nie zmienia

0

valgrind pokazuje invalid free, wiec cos z tym zwalnianiem tablicy tablic

0

ok, rozwiazalem problem

1 użytkowników online, w tym zalogowanych: 0, gości: 1