Здравствуйте, 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 может не сразу возвращать память операционной системе.