problem rozwioazany, dzeiki
jak to naprawic ?
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'));
}
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?
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) )
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 ?)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.