Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Утечка памяти 
:(
    Опции темы
Sergio
  Дата 15.7.2008, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Здравствуйте. 
У меня течёт память каждый раз при отправке пакета(
Вот код отправки:
Код

int winSocket::Send(Data pack)
{
    int error = 0;

    error = sendto(this->sClient, (char*)&pack, sizeof(pack), 0, 
                  (struct sockaddr *)&this->servaddr, sizeof(this->servaddr));

    if (error == SOCKET_ERROR)
    {
        printf("Send failed\n");
        return -1;
    }
    else
    {
        printf("Send Ok\n");
        return 0;
    }
}

Помогите найти утечку.
PM MAIL ICQ   Вверх
ppoger
Дата 15.7.2008, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну для начала передавай структуру data не значением, а по ссылке или передавай указатель. а больше я ничего тут не вижу, за исключением того, что надо проверять, сколько реально отправлено, и если не все, то доотправлять часть данных. но мемори лик скорее всего в другом месте. юзай _CrtSetDbgFlag
PM MAIL   Вверх
Sergio
  Дата 15.7.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Цитата

ну для начала передавай структуру data не значением, а по ссылке или передавай указатель.

ppoger, структура же относится к автоматическому типу памяти. Удалится при выхое из даного блока.
PM MAIL ICQ   Вверх
Mayk
Дата 15.7.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(Sergio @  15.7.2008,  04:15 Найти цитируемый пост)
Помогите найти утечку. 

С чего известно что а) она существует  б)  она существует в приведенном участке кода?


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Sergio
  Дата 15.7.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Цитата

а) она существует 

Потому что я использую Таск Менеджер. Там видно что каждый раз при отправке пакета растёт память. 
Логика програмы сделана так что каждую секунду отправляется пакет с даными.
Цитата

б)  она существует в приведенном участке кода? 

Потому что этот код отвечает за отправку пакета.Он используется в С шарпе в виде ДЛЛ.
Поскольку там присутствует сборщик мусора то вероятность утечки памяти на стороне шарпа я откинул


Это сообщение отредактировал(а) Sergio - 15.7.2008, 13:51
PM MAIL ICQ   Вверх
mes
Дата 17.7.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Sergio @  15.7.2008,  13:50 Найти цитируемый пост)
Потому что этот код отвечает за отправку пакета. 

можно коментировать часть кода и проверять повторится ли ситуация и так пока не достигнута цель..  smile 


--------------------
PM MAIL WWW   Вверх
DominiK
Дата 20.7.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Когда то сам парился по этому поводу напрасно, пару дней лопатил код в котором утечкой и не пахло. Сильно не зацикливайся на Task Manager. Для реальной проверки, оставь софтину работать минут 20. + Перезапусти таск менеджер пару раз и увидишь что датчик памяти сбивается в начальное число.
PM MAIL   Вверх
Fin
Дата 20.7.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



Сушествует куча софтин, которые показывают реальные течи памяти, а не мнимые. Да и в самой студии встроен механизм определения течи. Нужно только подключить загаловочный файл и определить пару макросов. http://msdn.microsoft.com/en-us/library/x9...28VS.80%29.aspx


--------------------
Пролетал мимо.
PM MAIL   Вверх
W4FhLF
Дата 20.7.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Так юзай smart pointer's. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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