32-разрядное приложение, скомпилированное с помощью Visual Studio, вылетает с «HEAP CORRUPTION DETECTED», когда я пытаюсь создать новый поток - PullRequest
0 голосов
/ 20 января 2020

Я написал приложение на 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-разрядном компьютере? Или это вызвано чем-то другим?

...