Возвращаемое значение функции обычно сохраняется в стеке или в регистре. Но для большой структуры она должна быть в стеке. Сколько копий должно произойти в реальном компиляторе для этого кода? Или он оптимизирован?
Например:
struct Data {
unsigned values[256];
};
Data createData()
{
Data data;
// initialize data values...
return data;
}
(Предполагая, что функция не может быть встроена.)