Информация об изменениях

Сообщение Re[2]: Как правильно освободить память от массива символов, от 28.04.2015 8:41

Изменено 28.04.2015 8:43 kaa.python

Здравствуйте, PM, Вы писали:

PM>Здравствуйте, newpy, Вы писали:


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

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

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


PM>Но вообще, понятнее будет выделять и освобождать память на одной стороне:

PM>
PM>void genstr(char* str, unsigned int len) {
PM>   // заполняем str
PM>}

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

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


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


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


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


Программа учебная. Действительно, пример помог. Спасибо.
Re[2]: Как правильно освободить память от массива символов,
Здравствуйте, PM, Вы писали:

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


Программа учебная. Действительно, пример помог. Спасибо.