Re: Как правильно освободить память от массива символов, полученных из функции?
От: PM  
Дата: 28.04.15 07:54
Оценка:
Здравствуйте, newpy, Вы писали:

N>Как правильно освободить память от массива символов, полученных из функции?

N>Ниже приведен пример. Пытался и через delete str.

Всё правильно — если выделяешь new[], значит удаляешь delete[]

Но вообще, понятнее будет выделять и освобождать память на одной стороне:
void genstr(char* str, unsigned int len) {
   // заполняем str
}

int main() {
    unsigned int X, lines_count = 1, ix = 0;
    cout << "Введите длину текста, который необходимо сгенерировать: ";
    cin >> X;
 
    char * str = new char[X];
    genstr(str, X);

    // Здесь мы что то делаем с этой "строкой"
 
    // Здесь мы пытаемся освободить память
    delete [] str;
 
    system("PAUSE");
    return 0;
}


Если программа не учебная, следующим этапом должен быть переход от ручного управления памятью к использованию std::string

N>Естественно проверяю объем занимаемой памяти в диспетчере. До генерации занимает 440КБ. После генерации объем растет в зависимости от количества символов в тексте ( что логично ).


Диспетчер, это диспетчер задач Windows? Насколько я помню, там занимаемая приложением память это какое-то другое значение. И менеджер памяти используемый в CRT может не сразу возвращать память операционной системе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.