LINUX.ORG.RU

История изменений

Исправление KRoN73, (текущая версия) :

стекового Си

А что это за зверь такой?

Когда в Си создаётся объект, то он может быть создан на стеке вызова. Получается очень быстро. Но нельзя вернуть ссылку на такой объект из функции — перед возвратом из функции всё, созданное на стеке освобождается. В Си так создаются простые переменные или объекты, создаваемые как Complex j = Complex(0,1);. В этом случае объект будет создан на стеке и будет уничтожен при выходе из функции.

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

Исходная версия KRoN73, :

стекового Си

А что это за зверь такой?

Когда в Си создаётся объект, то он может быть создан на стеке вызова. Получается очень быстро. Но нельзя вернуть ссылку на такой объект из функции — перед возвратом из функции всё, созданное на стеке освобождается. В Си так создаются простые переменные или объекты, создаваемые как Complex j = Complex(0,1);. В этом случае объект будет создан на стеке и будет уничтожен при выходе из функции.

Если нужно вернуть ссылку на объект, его нужно создавать где-то отдельно в памяти. В классическом Си это «куча» («heap»). Объекты создаются по new и должны быть удалены потом вручную по delete. Ссылку на такой объект можно вернуть, но операция выделения памяти очень медленная. И нужно быть осторожным, чтобы не забыть потом удалит объект, иначе будет утекать память.