2013-09-27 1 views
2

Я начинающий программист на C++. Недавно я начал работать с обработкой изображений с использованием C++. Я пытаюсь определить и использовать простые функции, такие как:Недопустимый адрес, указанный для RtlValidateHeap DLL

Matrix MVE(Matrix R) 
{ 
    Matrix *X = P.T(); 
    invX = *X->Inverse(); 
    delete X; 
    return invX; 
} 

или

Matrix MVE(Matrix R, double tolerance) 
{ 
    int n = R.Y(); 
    int m = R.X(); 
    Matrix X(n,m); 
for (int i = 0; i < n; ++i) 
     M[i][m] = tolerance * R[i][m-1]; 

    return M; 
} 

Там нет никаких проблем в режиме выпуска, но при запуске в режиме debbug, я получаю следующее сообщение об ошибке:

Windows вызвала точку останова в файле plappd.exe. Это может быть связано с повреждением кучи, что указывает на ошибку в файле plappd.exe или на любую из загруженных DLL-файлов. Это может быть связано с нажатием кнопки F12, когда у plappd.exe есть фокус.

Я вызываю конструкторы и операции для класса Matrix из другого DLL-файла.

Я попытался сменить Debug Multithreaded (/ MTd) на Debug Multithreaded DLL (/ MDd), как это было предложено на многих форумах, но это не помогло решить проблему.

Любые предложения?

Заранее спасибо.

ответ

0

Не могли бы вы использовать некоторые инструменты (например, зависимость Walker), чтобы проверить, что exe и dll используют одно и то же время выполнения? (обычно вы проверяете наличие MSVCR **. DLL) EXE и DLL должны использовать одно и то же время выполнения в вашем случае.

Edit: Кроме того, вы сказали, что вы изменили "от отладки многопоточных (/ МПД) для отладки многопоточных DLL (/ MDD)" Оба режима отладки. Так как кажется, что ваше Run Time отлично работает в вашей конфигурации Release, я думаю, вы должны использовать то же самое: Должен быть многопоточный (/ MT) или многопоточный DLL (/ MD)

+1

Я попробовал Multi- DLL (/ MD) в режиме деблокирования, и он сработал. С другой стороны, как многопоточные (/ MT), так и многопоточные DLL (/ MD) дают мне ту же ошибку в режиме отладки. – user2811175