Re[3]: sockets. memory leak
От: Игoрь Украина  
Дата: 08.07.05 18:59
Оценка:
Здравствуйте, remark, Вы писали:

R>Здравствуйте, Michael Chelnokov, Вы писали:


MC>>Здравствуйте, Agygy, Вы писали:


A>>>for(int j=0; j<100; j++)

A>>>{
A>>> CSocket s;
A>>> s.Create();
A>>> if (s.Connect("localhost", 21))
A>>> {
A>>> s.Send("12345", 5);
A>>> }
MC>>s.Close();
A>>>}

R>А на WinXP sp2 с mfc71 это не поможет!

R>День искал, почему у тестировщика на машине память утекает, а у меня всё нормально. В итоге обнаружил интересную вещь.
R>Если выполнить такой фрагмент

R>
R>AfxSocketInit();

R>for (int i = 0; i < 10000; ++i)
R>{
R>    CSocket sock;
R>    sock.Create();
R>    sock.Close();
R>}
R>


R>Программа сьедает 12Мб (!) памяти. На Win2k работает нормально.

R>
R>
R>

Стандартный совет: не используйте MFC-шные сокеты. Я не знаю сколько человек должен был выпить накануне,
чтобы написать такую херню как CSocket и CAsyncSocket.

Теперь по поводу утечки. Это естественно MFC-шная бага, обойти ее можно созданием дополнительного сокета в начале
работы приложения и пусть себе висит все время работы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.