Fogós C++ metódus visszatérés?
Figyelt kérdés
class A {
public:
A(char *ptr)
{
....
}
};
class Pelda {
public:
getvalue(string valuename)
{
char *buf = malloc(...);
// free(buf);
// return A(buf);<--- rossz mert buf mar fel lett szabaditva
return A(buf);
//free(buf); <---- nem hivodna meg sosem
}
};
Szoval szeretnek visszaterni A(buf)-val, de akkor utana hogy szabaditom fel a malloc()-kal lefoglalt buffert?
2015. okt. 30. 22:14
1/4 A kérdező kommentje:
de hulye vagyok:
A a(buf);
delete[] buf;
return a;
koszi hogy beneztel feleslegesen! :D
2015. okt. 30. 22:16
2/4 anonim válasza:
Ne használj raw pointer-t (olyan pointer-t amit kézzel kell felszabadítani), és minden megoldódik. Pl. a unique_ptr megoldja.
3/4 anonim válasza:
A valuename-et átadod az A konstruktorának, az A letárolja egy tagváltozóban - lehet new-zni, majd ha A bármikor megszűnik, a destruktorban fel lehet szabadítani a tagváltozót.
4/4 anonim válasza:
Ha C++ akkor inkább string. Ha az "A" konstruktorában nem deep copy van akkor pedig rossz is a programod.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!