Исходя из фона Java, я все еще немного запутался в распределении памяти в C++. Я почти уверен, что первые два утверждения верны:
void method() {
Foo foo; // allocates foo on the stack, and the memory is freed
// when the method exits
}
void method2() {
Foo *foo = new Foo(); // allocates foo on the heap
delete foo; // frees the memory used by foo
}
Но как насчет чего-то подобного?
void method3() {
Foo foo = *new Foo(); // allocates foo on the heap, and then copies it to the stack?
// when the method exits, the stack memory is freed, but the heap memory isn't?
}
Скажем, я добавил foo
в глобальный массив внутри method3()
. Если бы я попытался получить доступ к одному из элементов данных foo
после выхода из метода, сработало бы это? И method3()
склонен к утечкам памяти?
Заранее спасибо.
Foo foo();
на самом деле ничего не выделяет. Он объявляет функцию. - person chris   schedule 24.02.2013