Задача такая: в процессе выполнения логгировать (выводить в файл, отправлять другому процессу - неважно, главное - сохранять) некоторую информацию так, чтобы не было вызовов RtlAllocateHeap. Какие есть варианты решения? Параллельная задача: добавить свой код в некий процесс, опять же не трогая хип. Заранее спасибо.
Squash Ну не в heapе же. http://stackoverflow.com/questions/872072/whats-the-differences-between-virtualalloc-and-heapalloc
Squash тут еще есть такой момент, что все эти сохранения и отправки будут брать время. не знаю специфики задачи, но в некоторых применениях такое может быть критично. возможно, отдельный поток? а там хоть кольцевой буфер в стеке адд. а если все равно в файл и нету противопоказаний, то отчего не мапить сразу в тот файл? заодно, если в другой процесс на чтение, то нет нужды бурить еще путь
Есть-то она есть, но ето всего лишь обертка над HeapAlloc. С другой стороны, непонятно, чем аффтару так не угодил HeapAlloc. Попахивает какой-то религиозной фобией.
Ursus, остались сомнения, что его использование не повлияет на распределение в хипе. _DEN_, Booster не раздражайте меня.
Squash хиперы (системный, С-рантаймовый, С++ рантаймовый могут быть разными) действуют так - хипер получает страницы, бьет их на части запрошенного размера и сохраняет структуру разбиения гдето тамже те, страницы выделенные не хиперу (виртуал аллок, мап) хиперу не видны вообще (найти их конечно можно если нужно), те никак не влияют (есть только тонкость - если ваш хипер гц-базед и вы будете перекидывать переменные из него через вашу тень, то можете нарваться на неприятный сюрприз) кстати, виртуал аллок и мапы напрямую транслируются в сисколы. так что, если вы хотите скрыть вызова апи вообще, то можете этим воспользоваться
если у аффтара фобия от HeapAlloc и он упорот, то можно написать свои минилибу аналогичную HeapAlloc : выделить большой регион через VirtualAlloc, завести массив описателей выделенных и не выделенных кусков и при вызове функции MyCoolHeapAlloc находить свободный кусок буфере и передавать на него указатель. (заодно можно реализовать какую угодно гранулярность выделения кусков). Алсо, можно прикруть свистелки и перделки, блекджек и шлюхи и расширять(или уменьшать) основной регион по мере необходимости. вопрос совсем другой: а смысл?