- TCL LCD és LED TV-k
- Samsung LCD és LED TV-k
- Obsbot blog: 4K-s produkciós kamera professzionális babérokra törőknek
- Nem a Microsoft árazta be az Xbox kézikonzolokat
- Hisense LCD és LED TV-k
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- SSD kibeszélő
- Gaming notebook topik
- 5.1, 7.1 és gamer fejhallgatók
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
Új hozzászólás Aktív témák
-
Gyuri16
senior tag
válasz
dani0907 #1049 üzenetére
megneztem valgrind-dal ( valgrind --leak-check=yes -v ./strc ), eredmeny:
==6235== 871 errors in context 1 of 1:
==6235== Mismatched free() / delete / delete []
==6235== at 0x4023881: operator delete(void*) (vg_replace_malloc.c:387)
==6235== by 0x8048D80: stringc::operator=(stringc) (stringc.hpp:61)
==6235== by 0x8048F98: load(_IO_FILE*, stringc) (stringc.hpp:103)
==6235== by 0x8049073: test_1() (strc.cpp:17)
==6235== by 0x80491C0: main (strc.cpp:42)
==6235== Address 0x42c5f20 is 0 bytes inside a block of size 1 alloc'd
==6235== at 0x40243B0: operator new[](unsigned int) (vg_replace_malloc.c:299)
==6235== by 0x8048C46: stringc::stringc(stringc const&) (stringc.hpp:46)
==6235== by 0x804905A: test_1() (strc.cpp:17)
==6235== by 0x80491C0: main (strc.cpp:42)(sorszamok nem fognak egyezni, mert kivettem belole az ifdefeket)
ebben a fuggvenyben:
stringc stringc::operator=(stringc s){
if(this == &s)
return *this; //önmagába nem másol
delete p;
h=s.h;
p= new char[h+1];assert(p!=0);
strcpy(p,s.p);
return *this;
}delete p; helyett delete [] p; kell.
-
Sk8erPeter
nagyúr
válasz
dani0907 #1051 üzenetére
És gondolod, a levlistás emberkék nem olvassák ezt a fórumot?
(Én is BME-s vagyok, simán lehetnék akár évfolyamtársad is.
)
Igen, Cporta elég háklis bárminemű hibára, mert Linuxos fordító.
Megpróbálhatnád esetleg Te is azzal.
Nekem most sajnos nincs időm debuggolgatni, de remélem, valaki rá tud nézni a kódodra!Még egy:
"Egyébként, benne van a #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>"
És a többi dolog, ami a linkelt hsz.-ben látszik?
Lehet, hogy nem ártana az sem.Amúgy mi az egész pontos hibaüzenet? Vagy csak ennyi, h memóriaszivárgás? Én már nem emlékszem, kaptunk-e valami egzaktabb hibaüzit.
Mondjuk asszem nem.
-
Sk8erPeter
nagyúr
válasz
dani0907 #1049 üzenetére
Nem láttam még a kódodat (amúgy elég bátor dolog felrakni pastebin-re, később ezzel vigyázz, mert "Számítógépes grafika és képfeldolgozás" tárgyból emiatt könnyen plágiumvád érhet! - még ha a Te kódod is került fel netre...), DE
ide pont leírtam, hogyan lehet detektálni a memóriaszivárgás forrását: [link]Szerk.: félreértés ne essék, pastebin-re felrakni a kódot egyébként nagyon is jó dolog, csak ha para lehet belőle mondjuk házinál vagy egyéb esetben, akkor nem biztos, h jó ötlet.
-
Sk8erPeter
nagyúr
válasz
dani0907 #1024 üzenetére
Hát amit én annak idején megcsináltam operátor-átdefiniálással, az a sorok tárolására szolgáló osztályban a következő:
string& operator[] (int n) // Indexoperátor a tároló megadott elemének elérésére (pl. itt egy adott sor)
Ez_a_te_taroloosztalyod& operator= (const Ez_a_te_taroloosztalyod&) // egyenlőség operátor a másik tároló lemásolásáraa tárolóosztályon belüli belső iterátor osztályban ezek lehetnek:
void operator++ () // pre-increment növelés
void operator++ (int n) // post-increment növelés
bool operator== (const iterator &other) const // egyenlő-e a két iterátor
bool operator!= (iterator &other) // egyenlő-e a két iterátor
string & operator* () // iterátor indirekcióTehát mint látható, igazából az iterátor osztályhoz kell pár operátor-átdefiniálással járó cucc, de amúgy tényleg nem kell annyira erőltetni.
Legalábbis nekem most épp nem jut eszembe más, de aztán amikor a feladatot megoldogatod, küldözgethetsz ide státuszjelentéseket, ha nem klappol valami, vagy eszedbe jutott újabb dolog, és akkor lehet, hogy még felmerül, hogy mégis kéne valami operátor-átdefiniálós metódus.Egykori előadónk honlapján megtalálsz egy konkrét példát az iterátor osztályról: [link]
Bár feltételezem a feladatleírásból, Te is BME-re jársz, Szebihez, vagy tévednék?
-
Sk8erPeter
nagyúr
válasz
dani0907 #1020 üzenetére
Hehe, csak nem "Szoftver laboratórium 2." BME-n?
Az első mondat annak idején nálam is ugyanez volt, csak nekem a tail programot kellett elkészítenem.
A tetszőleges hosszúságú sorokból álló szöveges állományt reprezentáló objektum vizsgálgatásához én cirkuláris buffert készítettem, ami tulajdonképpen egy olyan tároló, amibe folyamatosan pakolgatod bele az elemeket (én a tároló egy adott "rekeszében" a sorokat tároltam \n-ig), és amikor a tároló megtelt, akkor elkezded újból elölről feltöltögetni a tárolódat, és ezen végezgeted a grep-vizsgálatot. Ez azért jó, mert tulajdonképpen tetszőleges hosszúságú sorokból álló szöveges állományt tudsz vizsgálgatni, nem állhat elő olyan helyzet, hogy már olyan brutálisan sok memóriát foglaltál, hogy egyszerűen nincs több szabad memória (mert mondjuk minden szart eltárolsz), viszont talán egész hatékonynak mondható módja a tárolásnak.
Ja, és gondolom nálatok is úgy van, hogy STL-t nem lehet használni, így saját tárolót kell írni.A grep mondjuk elég összetett, ahogy a példa írja, válassz ki néhány megvalósítandó funkciót, ami nem tűnik olyan brutálnak (vagy ahogy érzed
), amikhez a megfelelő kapcsolók tartoznak, és azokat írd meg. Kezdd el írni, és ha elakadtál, konkrétan kérdezz rá, hogy mire gondoltál, mi nem megy, hogy szeretnéd megvalósítani, és akkor tovább is tudunk segíteni remélhetőleg.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mibe tegyem a megtakarításaimat?
- TCL LCD és LED TV-k
- Tomato firmware
- sziku69: Fűzzük össze a szavakat :)
- Lelövi a Messengert a Facebook Windowson és Macen
- Okos Otthon / Smart Home
- Autóápolás, karbantartás, fényezés
- Óra topik
- One otthoni szolgáltatások (TV, internet, telefon)
- Samsung LCD és LED TV-k
- További aktív témák...
- Minis Forum Mini PC MS-A2 Ryzen 9955HX RAM és SSD nélkül 1 év garanciával
- Gamer PC i5-14400F + RX 9060 XT 16 GB, 32GB RAM, 1TB SSD Székesfehérvár, GARANCIÁS, AZONNAL!
- Huawei Watch 5 42mm Sand Gold 904L Steel // 'Aranyló homok' rozsdamentes acél
- Lenovo Legion 5 15ACH6 (82JW006EHV) Gamer laptop
- Gyári Apple tokok iPhone 14pm/14/14p/12pm
- HIBÁTLAN iPhone 14 Plus 128GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3659
- BESZÁMÍTÁS! Gigabyte H610M i3 12100F 16GB DDR4 500GB SSD RTX 2060 Super 8GB Rampage SHIVA 500W
- BESZÁMÍTÁS! MSI B450 R5 5500 16GB DDR4 512GB SSD RX 6600 XT 8GB Fractal Design Core 2500 ADATA 600W
- Samsung Galaxy S24 Ultra 8/256 GB Titanium Gray 6 hónap Garancia Beszámítás Házhozszállítás
- ÁRCSÖKKENTÉS MSI Z77 MPOWER Alaplap eladó
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest