Много играл в эту игру на Symbian: когда использовать TBuf (строка с хранилищем в стеке) и когда использовать HBufC (который выделяет хранилище строк в куче, например std :: string, так что вы должны справиться с Leave, и ваша функция нуждается в средствах сбоя).
В то время (возможно, все еще, я не уверен) потоки Symbian по умолчанию имели 4k стека. Чтобы манипулировать именами файлов, вам нужно рассчитывать на использование до 512 байт (256 символов).
Как вы можете себе представить, полученная мудрость заключалась в том, что "никогда не кладите имя файла в стек". Но на самом деле оказалось, что с этим можно сойти гораздо чаще, чем вы думаете. Когда мы начали запускать реальные программы (ТМ), такие как игры, мы обнаружили, что в любом случае нам нужно больше, чем размер стека по умолчанию, и это было не из-за имен файлов или других конкретных больших объектов, а из-за сложности код игры.
Если использование стека делает ваш код проще, и при условии, что вы тестируете должным образом, и до тех пор, пока вы не будете полностью перегружены (у вас нет нескольких уровней функций обработки файлов, которые все *) 1008 * поместите имя файла в стек), тогда я бы сказал, просто попробуйте. Особенно, если в любом случае функция должна быть в состоянии потерпеть неудачу, используете ли вы стек или кучу. Если что-то пойдет не так, вы либо удвоите размер стека и будете более осторожны в будущем, либо добавите еще один случай сбоя в свою функцию. Не конец света.