Подкиньте варианты стабильных реализаций "Резиновых буферов" в примерах на асм. Есть некоторые варианты с васма. Но они отстойные до нехочу. Примеры работают с мелким количеством данных а с большим уходят в аут.
ну как бы да =) но вот незадача , делал я так , динамический буфер шли названия папок. По мере прохождения мемкомит , вызывалась ошибка алокации , причина не ясна кода ошибки нет. Просто 0 и все. И с этого момента все идет прахом =) там всего то строчек то.
Это в смысле лень GetLastError вызвать? Тогда действительно см. отладчике, олька это за тебя сделает Ну и запостил бы их, наверняка какой-нибудь мелкий ляп
Изначально в оле и было исследование =) запускаем мну в оле и идем на диск с папка виндовс , и там сразу в оле ве видно.
Давайте конструктивно , если меткий взор увидел коментарий. То он должен был заметить что выделяется не 1 гб , а всего 20 метров. А некоторые коментарии там лишнии. Не было времени менять удалять и стирать.
calidus Он не смотрел на числа, он посмотрел на флаг MEM_RESERVE. Она не выделяется, а резирвируется место в АП, далее попытка создать блок памяти пересекающийся с зарезервированным закончится неудачей, если по выбору системы - то она не будет использовать данный диапазон адресов. Выделяет память следующий сервис из зарезервированного блока. Все юзают секции, ну для вас это мэппинги(CreateFileMapping() и др.).
Енто как? У меня щелчёк по кнопке инфо или листвиеву вызывает месбох 1 егор, а кусок кода с VirtualAlloc не исполняется совсем Разбирать все трудночитаемые навороты проги есно влом Пример по меппированию, только имхо это не лучше VirtualAlloc, в которой у тебя ошибок не заметил Кстати как выяснилось можно даже не резервировать, а сразу commit-ить 20 метров, тогда умная винда сама будет подбрасывать страницы по мере их реального использования без повторных вызовов VirtualAlloc Clerk даже если закоммитить 1Гб, проверял из любопытства ) add: Не всё так просто как казалось...
ясный пень ошибка будет ...там же конектится надо. Конект а потом уже инфо. Нету там наворотов =) простое приложение. Спасибо за ссылки.
Y_Mur Я тоже проверял недавно, когда антитрассировку тестил. У меня полгига аперативы, выделял больше гига. Система страшно тормозила. Гораздо лучше.
Млин мне гиг не нужен. Мне надо чтоб не было проблем со смещением блоков памяти и добавлением к имеющимся данным данных новых неизвестной длины но явно не за 20 метров. Мэпинг пойдет ?
calidus Делай VirtualAlloc, 0, 20*1024*1024, MEM_COMMIT, PAGE_READWRITE один раз и усё будет в порядке, если конечно дело в памяти, а не в чём то ещё Кстати твой сервер запускал, коннект нажимал никакого эффекта. add: Не всё так просто как казалось...
calidus При SDELANO==TRUE происходит вызов VirtualAlloc по исходному адресу AllocedMemory с размером принимаемого пакета availablData. Это неверно, т.к. нужно учитывать размер ранее принятых\записанных данных, прибавляя его либо к адресу, либо к запрашиваемому размеру VirtualAlloc PS: Опять GlobalLock\GlobalUnlock > Задолбали бездумные пионеры :wall: