Вызов malloc() из неуправляемой DLL, вызываемой из управляемой DLL, вызывает нарушение прав доступа
У меня есть набор тестов, написанных на C++/CLI, которые обращаются к нативной DLL для удаленного тестирования устройства Windows CE. В двух точках процесса настройки теста выделяется память в собственной куче - один раз для 512 байтов, другой для 572 байтов. В обоих случаях malloc() в конце концов вызвал HeapAlloc() с использованием кучи CRT. Дескриптор кучи CRT не менялся между вызовами. Вызов, который должен был выделить 572 байта, завершается неудачей с исключением 0xc0000005 (я могу попытаться предоставить примеры кода, если это необходимо, но мне придется выяснить, какие примеры являются достаточно общими, чтобы не нарушать NDA).
2 ответа
Похоже, что в конечном итоге проблема была решена не использованием кучи времени выполнения C, а использованием GetProcessHeap() или локальной кучи для распределения.
Подумайте об использовании отладки malloc. Вот статья об использовании режима отладки DevStudio для замены специальных отладочных версий malloc и free.