Я написал приложение на C ++ с использованием GTK и GLib, которое показывает GUI и выполняет вычисления в нескольких потоках. 64-битный исполняемый файл, скомпилированный с Visual Studio, работает безупречно, а 32-битный - нет. Моя Windows версия является 64-битной.
Если я запускаю 32-битный исполняемый файл, появляется GUI, и кнопки, меню и т. Д. c работают нормально, пока я не нажму на указанную c кнопка, которая вызывает g_thread_new
через функцию. Как только эта функция вызывается, код падает с
Microsoft Visual C++ Runtime Library
HEAP CORRUPTION DETECTED
CRT detected that the application wrote to memory after end of heap buffer
Этот cra sh также странен тем, что его невозможно отладить с помощью Visual Studio. Все, что показано, - это то, что она связана с библиотекой ntdll.dll
, но мне пришлось найти ошибочную строку методом проб и ошибок в моем коде. И эта ошибка не возникает в 64-разрядной версии исполняемого файла.
Разве невозможно запустить 32-разрядные многопоточные приложения на 64-разрядном компьютере? Или это вызвано чем-то другим?