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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2012, 13:59   #1
Lost7070
Пользователь
 
Регистрация: 02.03.2012
Сообщений: 25
Вопрос Каким оператором удалить строку String^ созданную gcnew?

Здравствуйте.
Подскажите чем удалить строку String^ созданную с помощью gcnew?
Оператор delete видимо не подходит.
Код:
String^ str = gcnew String(pv->name_bus);
delete str;
Заранее благодарен всем отозвавшимся.
Lost7070 вне форума Ответить с цитированием
Старый 28.10.2012, 14:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем? Пусть уборщик мусора сам решает когда освобождать память.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2012, 14:45   #3
Lost7070
Пользователь
 
Регистрация: 02.03.2012
Сообщений: 25
Вопрос

Дело вот в чём.
Эта переменная в цикле и каждый следующий повтор цикла переменная должна переопределяться. Вот только уборщик мусора не считает что перед каждой итерацией нужно освободить память для другого значения.
Ниже код.
Код:
				 pv = pbeg;
				 while(pv)
				 {

					 ListViewItem ^item1;
					 String^ str = gcnew String(pv->name_bus);
					 String^ str2 = gcnew String(pv->name_driver);
					 item1=gcnew ListViewItem(Convert::ToString(pv->number));
					 listView1->Items->Add(item1);
					 item1->SubItems->Add(str);
					 item1->SubItems->Add(str2);
					 pv=pv->next;
					 delete str;
					 delete str2;
				 }
Lost7070 вне форума Ответить с цитированием
Старый 28.10.2012, 14:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вот только уборщик мусора не считает что перед каждой итерацией нужно освободить память для другого значения.
А ты это как понял? В диспетчере задач подсмотрел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2012, 15:17   #5
Lost7070
Пользователь
 
Регистрация: 02.03.2012
Сообщений: 25
По умолчанию

В отладчике. Да и ошибку программа выдаёт если запустить.
Lost7070 вне форума Ответить с цитированием
Старый 28.10.2012, 15:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я предположу что освобождение памяти можно добиться, если присваивать строке пустое значение
str="";
Я правда не знаю пройдет ли такое в CLR, но попробуй.
Цитата:
ошибку программа выдаёт
Ну а на какой строке?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2012, 15:38   #7
Lost7070
Пользователь
 
Регистрация: 02.03.2012
Сообщений: 25
По умолчанию

Спасибо огромное за помощь, проблема решена. Вся проблема в моей невнимательности и глупости. Дело было совсем не в выделении памяти, а в указателе.
Lost7070 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 4 05.07.2012 20:27
Удалить пустую строку созданную StringList-ом Shouldercannon Общие вопросы Delphi 18 14.12.2011 11:52
как удалить созданную тему или хотя бы вложение свое? dasmeer Помощь студентам 1 14.03.2010 00:19
Как удалить созданную тему? ruavia3 О форуме и сайтах клуба 1 06.04.2009 11:21
Джентльмены, помогите, пжлст. каким оператором высчитать корень 5-ой степени числа? Osi@ Помощь студентам 32 03.10.2007 19:52