История изменений
Исправление
KRoN73,
(текущая версия)
:
стекового Си
А что это за зверь такой?
Когда в Си создаётся объект, то он может быть создан на стеке вызова. Получается очень быстро. Но нельзя вернуть ссылку на такой объект из функции — перед возвратом из функции всё, созданное на стеке освобождается. В Си так создаются простые переменные или объекты, создаваемые как Complex j = Complex(0,1);
. В этом случае объект будет создан на стеке и будет уничтожен при выходе из функции.
Если нужно вернуть ссылку на объект, его нужно создавать где-то отдельно в памяти. В классическом Си это «куча» («heap»). Объекты создаются по new и должны быть удалены потом вручную по delete. Ссылку на такой объект можно вернуть, но операция выделения памяти очень медленная. И нужно быть осторожным, чтобы не забыть потом удалит объект, иначе будет утекать память. Complex *j = new Complex(0,1);
Исходная версия
KRoN73,
:
стекового Си
А что это за зверь такой?
Когда в Си создаётся объект, то он может быть создан на стеке вызова. Получается очень быстро. Но нельзя вернуть ссылку на такой объект из функции — перед возвратом из функции всё, созданное на стеке освобождается. В Си так создаются простые переменные или объекты, создаваемые как Complex j = Complex(0,1);
. В этом случае объект будет создан на стеке и будет уничтожен при выходе из функции.
Если нужно вернуть ссылку на объект, его нужно создавать где-то отдельно в памяти. В классическом Си это «куча» («heap»). Объекты создаются по new и должны быть удалены потом вручную по delete. Ссылку на такой объект можно вернуть, но операция выделения памяти очень медленная. И нужно быть осторожным, чтобы не забыть потом удалит объект, иначе будет утекать память.