Как компиляторы C реализуют функции, которые возвращают большие структуры?

Возвращаемое значение функции обычно хранится на стеке или в регистре. Но для большой структуры, это должно быть на стеке. Сколько копирования должно произойти в реальном компиляторе для этого кода? Или это оптимизировано далеко?

Например:

struct Data {
    unsigned values[256];
};

Data createData() 
{
    Data data;
    // initialize data values...
    return data;
}

(Принятие функции не может быть встроено..)

24
задан Peter Cordes 18 October 2019 в 02:07
поделиться