Я уверен, что есть много трюков с компилятором, но проще всего сделать так, чтобы вы использовали это значение. В этом случае просто передайте возвращенный массив какой-то другой функции. Другая функция не должна ничего делать, но этого должно быть достаточно, чтобы убедить компилятор в том, что вам нужны результаты.
Если вы обнаружите, что ваша пустая вторая функция также оптимизируется, просто вставьте ее в общую библиотеку (DLL), и компилятору будет невозможно узнать, как она используется.
То, как вы распределяете результат, также может изменить это. Если вы передадите исходной функции указатель, вы можете просто передать ей указатель кучи. Поскольку этот указатель может использоваться где-то еще, весьма маловероятно, что компилятор сможет оптимизировать код, поскольку он не знает, будут ли использованы результаты.
Вы также можете законно использовать данные. Имеет смысл проверить результаты в другой функции. Если вы выполняете тестирование производительности, просто поместите эту часть проверки за пределы временной секции. Обычно я делаю такие тесты производительности (убедитесь, что результат проверен / использован).