Tôi vô cùng tò mò nếu trả lại một tham chiếu từ một phương pháp có thể gây ra rò rỉ bộ nhớ. Dưới đây là tình huống ví dụ.Các phương thức có thể trả về tham chiếu const hoặc tham chiếu gây rò rỉ bộ nhớ?
class example
{
public:
vector<int> & get_vect()
{
return vect;
}
int & get_num()
{
return num;
}
private:
vector<int> vect;
int num;
};
void test_run(example & input)
{
int & test_val = input.get_num();
vector<int> & test_vect = input.get_vect();
}
int main()
{
example one;
test_run(one);
return 0;
}
Câu hỏi của tôi là khi test_val
và test_vect
sẽ bị xóa khỏi stack khi test_run
thoát. Có hoặc là test_vect
hoặc test_val
bị xóa do đó khiến đối tượng bị hỏng?
Rò rỉ bộ nhớ chỉ có thể xảy ra nếu phân bổ bộ nhớ động có liên quan. – Angew