- Yettel topik
- Huawei Watch GT 5 Pro - egészség + stílus
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- iPhone topik
- Apple Watch
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Telekom mobilszolgáltatások
- 6 év biztonsági támogatást ígér a Motorola
- Ilyen lesz a Fairphone 6
Ú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
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Eladó konfig! Ryzen 7 7800X3D 2TB SSD 64GB DDR5 RX9070XT 16GB!
- Új, makulátlan állapotú Samsung Galaxy Buds FE, fehér, fél év garancia
- Új, makulátlan állapotú Samsung Galaxy Watch7 44mm ezüst, 2 év garancia
- Új, makulátlan állapotú Samsung Z Fold 6 256GB Tengerészkék, független, 2 év garancia
- Használt TP-Link Deco M4 - AC1200 Router (Mesh-ként is használható)
- Lenovo ThinkCentre M720q/ Dell OptiPlex 3060- 3070/ Hp EliteDesk 800 mini, micro PC-Számla/garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- LG OLED Televíziók: FRISS SZÁLLÍTMÁNY -30%
- Bomba ár! Lenovo Miix 510-12IKB : i5-7G I 8GB I 256GB SSD I 12" Touch I Cam I W11 I Garancia!
- BESZÁMÍTÁS! GIGABYTE H77-DS3H H77 chipset alaplap garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest