Kezdőoldal » Számítástechnika » Programozás » Fogós C++ metódus visszatérés?

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.
2015. okt. 31. 00:12
Hasznos számodra ez a válasz?
 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.
2015. okt. 31. 00:40
Hasznos számodra ez a válasz?
 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.
2015. okt. 31. 01:14
Hasznos számodra ez a válasz?

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!