►Возврат к куче...175
Проблемы, возникающие при работе с указателями на простые переменные, распространяются и на указатели на объекты. В частности, необходимо гарантировать, что указатель ссылается на существующий корректный объект. Так, нельзя возвращать указатель на локально определённый объект, как это сделано в данном примере:
MyClass* myFunc( )
{
/* Эта функция не будет работать правильно */
MyClass mc ;
MyClass* рМС = &mc ;
return рМС ;
}
После возврата из myFunc( ) объект mc выходит из области видимости, а значит, указатель, который возвращает myFunc( ), указывает на несуществующий объект.
«Проблемы, связанные с возвратом памяти, которая выходит из области видимости, рассматривались в главе 9, "Второе знакомство с указателями".»
[Помни!]
Использование кучи позволяет решить эту проблему:
MyClass* myFunc( )
{
MyClass* рМС = new MyClass ;
return рМС ;
}
«С помощью кучи можно выделять память для объектов в самых разнообразных ситуациях.»
[Помни!]
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ