Is the code correct from the viewpoint of memory allocation?
#include <iostream>
using namespace std;
class A {
private:
    int x;
public:
    A():x(10){}
};
A &foo()
{
    return *(new A); //1
}
int main()
{
    A &a=foo();//2
    delete &a; //3
    return 0;
}
Explanation
The code is correct: the delete operator releases the memory allocated in the foo() function. In line 1 the pointer is dereferenced to return the reference to the object, in line 2 the object is returned, in line 3 the address of the released area is passed to the operator delete.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по C++
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты