Как правильно освободить память от массива символов, полученных из функции?
Ниже приведен пример. Пытался и через delete str.
Естественно проверяю объем занимаемой памяти в диспетчере. До генерации занимает 440КБ. После генерации объем растет в зависимости от количества символов в тексте ( что логично ).
// Generate string
char * genstr(unsigned int len) {
char chars[] = {'0','1','2','3','4',
'5','6','7','8','9',
'A','B','C','D','E','F',
'G','H','I','J','K',
'L','M','N','O','P',
'Q','R','S','T','U',
'V','W','X','Y','Z',
'a','b','c','d','e','f',
'g','h','i','j','k',
'l','m','n','o','p',
'q','r','s','t','u',
'v','w','x','y','z', '\n', ' ',
'#'
};
char * str = new char [len];
for (unsigned int ix = 0; ix < len; ++ix){
// Первую половину текста мы генерируем без решетки
if (ix < len / 2)
str[ix] = chars[rand() % sizeof(chars) - 1];
else
str[ix] = chars[rand() % sizeof(chars)];
}
return str;
}
int main(int argc, char **argv) {
setlocale(LC_ALL, "rus");
unsigned int X, lines_count = 1, ix = 0;
cout << "Введите длину текста, который необходимо сгенерировать: ";
cin >> X;
char * str = genstr(X);
// Здесь мы что то делаем с этой "строкой"
// Здесь мы пытаемся освободить память
delete [] str;
system("PAUSE");
return 0;
}