Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 01:54   #1
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию Очистка динамического массива

Возник вопрос как очистить динамическую память в это коде:
Рабочий без очистки памяти:
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

char *Func(char *str)
{
	int SizeString;
	for(SizeString = 0; str[SizeString]; SizeString++);
	char *line = new char[SizeString + 1];
	for(int i = 0; line[i] = str[i]; i++);
	return line;
}
int main()
{
	setlocale(LC_ALL,"Russian");
	char Line[512];
	cout << "Введите строку: ";
	cin.getline(Line,512);
	char *LineDinamic = NULL;
	LineDinamic = Func(Line);
	for(int i = 0; LineDinamic[i]; i++)
		cout << LineDinamic[i];
	cout << endl;
	system("PAUSE");
	return 0;
}
Вылетает ошибка: Необъявленный идентификатор line;
Я думаю потому что указатель вышел из области видимости и память осталась:
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

char *Func(char *str)
{
	int SizeString;
	for(SizeString = 0; str[SizeString]; SizeString++);
	char *line = new char[SizeString + 1];
	for(int i = 0; line[i] = str[i]; i++);
	return line;
}
int main()
{
	setlocale(LC_ALL,"Russian");
	char Line[512];
	cout << "Введите строку: ";
	cin.getline(Line,512);
	char *LineDinamic = NULL;
	LineDinamic = Func(Line);
	for(int i = 0; LineDinamic[i]; i++)
		cout << LineDinamic[i];
	cout << endl;
        delete [] line;
	system("PAUSE");
	return 0;
}
Как очистить память в этом случае. . .
Знаю как очистить если пользоваться классом, а вот так не знаю
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 13.05.2012, 02:17   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Указатель на выделенную память возвращает функция, он записывается в переменную LineDynamic, ее и удаляйте
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка памяти массива (С++) Сольвейг Помощь студентам 3 11.12.2011 22:37
Заполнение динамического массива Skalp Помощь студентам 25 06.12.2011 10:51
Очистка динамического массива JohnnySuperb Общие вопросы Delphi 11 10.12.2010 07:47
очистка динамического массива BattleMage Общие вопросы C/C++ 1 19.09.2009 09:03
Освобождение динамического массива? VintProg Общие вопросы Delphi 15 28.08.2009 10:41