Ответ уже был дан, но, поскольку вы пометили вопрос как C ++, а не как C, вы, вероятно, захотите сделать это в C ++ (конечно, могут быть и другие причины, но шанс).
vector<char> (int ran){
vector<char> ret(char);
// process...
return ret;
}
И назвать это:
for(int i = 0; i < 100000000; i++){
vector<char> str = test(rand()%10000000+10000000);
// process...
}
Нет нового, поэтому нет удаления, следовательно, нет утечки памяти.
На самом деле, вы также, вероятно, хотите использовать std :: string вместо char * (я использовал вектор, чтобы привести более общий пример).
Не беспокойтесь о данных, которые будут скопированы. Компилятор оптимизирует его.
Редактировать : хорошо, это может не оптимизировать его :), однако есть большие шансы, что так и будет. И пока проблем с производительностью нет, выбирайте простейшую версию.