Как правильно освободить память от массива символов, полученных из функции?
От: newpy  
Дата: 28.04.15 07:30
Оценка:
Как правильно освободить память от массива символов, полученных из функции?
Ниже приведен пример. Пытался и через 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;
}
если не по делу: не засоряй канал...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.