Próbuję uzyskać trochę pamięci w programie C++ i chcę wiedzieć, czy mogę używać bloków jako zakresu zmiennych (jak w Perlu). Powiedzmy mam ogromny obiekt, który wykonuje pewne obliczenia i daje wynik, czy to ma sens robić:Czy mogę używać bloków do zarządzania zakresem zmiennych w C++?
InputType input;
ResultType result;
{
// Block of code
MyHugeObject mho;
result = mho.superHeavyProcessing();
}
/*
My other code ...
*/
mogę oczekiwać przedmiotem zostać zniszczone przy wyjściu z bloku?
Ściśle mówiąc, wywołanie destruktora nie jest tym samym, co zwolnienie pamięci używanej do przechowywania obiektów. – Constantin
Myślę, że można bezpiecznie założyć, że * wielkie * słowo w pytaniu oznacza, że obiekt przydzielił większą porcję pamięci na stercie i chce, aby została zwolniona (np. Wektor). –
Przykro mi, ale wydaje mi się, że MyHugeObject jest alokowany na stosie, a nie na kupce, chyba że zrobiono jawne wycinanie malloc. Proszę popraw mnie jeżeli się mylę. – 0fnt