Здравствуйте, Игoрь, Вы писали:
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-шная бага, обойти ее можно созданием дополнительного сокета в начале И>работы приложения и пусть себе висит все время работы.
Я бы и сам не стал вообще MFC использовать
Но проблема в том, что уже есть библиотечка, использующая CSocket. И надо юзать именно её. И всё вобщем то было хорошо, пока не провелили на XP
Вот ещё интересный момент: проверил на той же машине, но под другим пользователем (который не админ), запустил тот же самый exe-шник — память не утекает! Бред какой-то
А по поводу создания одного сокета в начале приложения: ИМХО для серверного приложения — это не очень хорошо. Для устойчивости лучше каждый раз новый соксет создавать и заново открывать соединение.