Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить массив 
V
    Опции темы
agealex
Дата 8.10.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



Есть массив переменной длины в зависимости от содержимого вызываемой функции, по этому приходится создавать его постоянно с параметром new, как его удалить ? в С++ был delete [] ... ;  а есть ли аналог в шарпе?
Код

while (!StopRecv)
            {
                int QBufSize = 1024 *EnlargeBuffer;
                byte[] buffer = new byte[QBufSize] ;
...

 smile 
PM MAIL   Вверх
ivashkanet
Дата 8.10.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



agealex, 

1) это не твои вопросы. Все сделает сборщик мусора (если все же считаешь их своими, то можно вызвать его принудительно: GC.Collect(); (вроде так))
2) Возможно тебе подойдет саморастущая коллекция (почти массив): List<T>
PM MAIL WWW ICQ   Вверх
agealex
Дата 8.10.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



 Запустить нужно один раз или тоже в цикле?

PM MAIL   Вверх
ivashkanet
Дата 8.10.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



agealex, в момент вызова GC.Collect(); сборщик мусора приступает к работе. Так что тебе нужно в цикле. Но ты учти, что будут собраны все "неживые" объекты, а не только твой массив. Так что первый запуск может "подтормаживать".

А вообще не заморачивайся. Я "кидаю" мегабайтные объекты и ничего. А ты на килобайтные смотришь...

P.S. Если распишешь задачу подробнее может найдём другое решение...
 
PM MAIL WWW ICQ   Вверх
zaver
Дата 8.10.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: 1
Всего: 3



да кстати GC заметно хавает ресурсы во время работы. ИМХО тебе не стоит его вызывать, он сам все делает за тебя, если утечки памяти и бывают то уж не его вине. я уже давно не забочусь о памяти, т.к. запустив диспетчера задач, сразу вижу что GC не дает памяти подыматься более чем на ~30% от первоночальной. редко бывают случаи когда есть утечки памяти, но это уже не по его вине.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
agealex
Дата 8.10.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



Ну в моем случае количество памяти очень важно, прога на кпк должна работать а там места мало, програмка усиленно засерает память, пытаюсь найти в каком месте , вот думаю может в этом
PM MAIL   Вверх
zaver
Дата 8.10.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: 1
Всего: 3



зачастую память засирается (т.е. так что GC никак не помогает) в том случае, если ты посотянно создаешь новые объекты, так что ссылки на старые не теряются, например сохраняются в списке или массиве и причом это может быть неявно. например, в XNA часто встречал такое, что создаются объекты каждый раз при прорисовке, я думал, что они удаляются (у меня в коде нигде не было "живих" указателей), а на самом деле какой-то библиотечный объект их просто "складировал" в свой список и  молчал  smile 
PM MAIL WWW ICQ Skype YIM MSN   Вверх
ivashkanet
Дата 8.10.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(agealex @  8.10.2007,  12:25 Найти цитируемый пост)
прога на кпк должна работать

Да, тут это важнее...
Цитата(agealex @  8.10.2007,  12:25 Найти цитируемый пост)
пытаюсь найти в каком месте

Может профайлер?
Вот тут их куча: http://sharptoolbox.com/categories/profilers-debuggers
Но большинство платные.
Лично я пользовался ANTS (триал на 14 дней) -- очень понравился.
PM MAIL WWW ICQ   Вверх
agealex
Дата 8.10.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



Все. Спасибо нашел, оказывается зря на шрап грешил, нашел ошибку в коде.
PM MAIL   Вверх
VisualProgrammerNET
Дата 11.10.2007, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 1
Всего: 6



Что мешало объявить массив нулевым до цикла и потом использовать его одного всегда?


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
ivashkanet
Дата 11.10.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



VisualProgrammerNET, а смысл?
Цитата(VisualProgrammerNET @  11.10.2007,  00:40 Найти цитируемый пост)
объявить массив нулевым до цикла

Оптимизатор компиляции все равно вынесет объявление переменной за пределы цикла. (А даже если не вынесет, то этот вызов ничего не стоит для системы).
Цитата(VisualProgrammerNET @  11.10.2007,  00:40 Найти цитируемый пост)
потом использовать его одного всегда

Не стоит путать "указатель" на массив и сам массив, физически расположенный в памяти (кот всегда разный).
PM MAIL WWW ICQ   Вверх
lankin
Дата 7.11.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



Цитата(zaver @  8.10.2007,  13:01 Найти цитируемый пост)
зачастую память засирается (т.е. так что GC никак не помогает) в том случае, если ты посотянно создаешь новые объекты, так что ссылки на старые не теряются, например сохраняются в списке или массиве и причом это может быть неявно. например, в XNA часто встречал такое, что создаются объекты каждый раз при прорисовке, я думал, что они удаляются (у меня в коде нигде не было "живих" указателей), а на самом деле какой-то библиотечный объект их просто "складировал" в свой список и  молчал 

И вот как от этого избавиться????
И, спрашивается, нафига это складирование придумано?
PM MAIL   Вверх
1stain
Дата 7.11.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



а что тебе мешает создавать массив байт в стеке - и быстродействие будет повыше и сборщег мусора ни причем...
Цитата( Рихтер"CLR via C#")

Когда вопрос производительности стоит особенно остро, можно размещать управляемый объект-массив не в куче, а в стеке потока, используя оператор stackalloc языка С#...



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
lankin
Дата 8.11.2007, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



Цитата(1stain @ 7.11.2007,  12:47)
а что тебе мешает создавать массив байт в стеке - и быстродействие будет повыше и сборщег мусора ни причем...
Цитата( Рихтер"CLR via C#")

Когда вопрос производительности стоит особенно остро, можно размещать управляемый объект-массив не в куче, а в стеке потока, используя оператор stackalloc языка С#...

А можно подробнее об этом?
PM MAIL   Вверх
1stain
Дата 8.11.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



поподробней  - купи книгу и прочитай. ЭТА книга своих денег стоит на 200%


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.