Наше приложение MFC, которое ссылается на win32 DLL.Когда приложение вызывает эту функцию DLL, после ввода стека функции аргумент «буфер» становится «плохим указателем».Это приводит к сбою приложения.
static MyClass* Instance(string& buffer);
Я изменил тип аргумента на «char *», но это только приводит к сбою следующего оператора в функции.Как обнаружить это повреждение кучи?
Несколько подсказок
- Этот сбой воспроизводим, даже если я вызываю эту функцию DLL с самого начала нашего приложения (конструктор CWinApp).Может ли это повреждение памяти быть вызвано загрузкой ресурсов, манифестом и т. Д.?
- Сбой происходит в Vista и Win7, но не в XP.
- Оба эти проекта были недавно перенесены из Visual Studio 2002VS2008.
Код, который вызывает функцию
CString data = "some string";
string str = data.GetBuffer();
data.ReleaseBuffer();
MyClass *obj = MyClass::Instance(str);