что такое __imp__malloc в связанной программе mingw-32? - PullRequest
0 голосов
/ 27 ноября 2010

В попытке выяснить, является ли malloc() в моей кросс-скомпилированной программе mingw32 поточно-безопасной или нет, я запустил nm в двоичном файле. Результаты:

$ i386-mingw32-nm myfile.exe  | grep malloc
00ab04fc I __imp__malloc
005b8e70 T _malloc
$

Для сравнения приведем поиск для GetLastError, который используется, но не определен в моей программе:

$ i386-mingw32-nm myfile.exe  | grep GetLastError
005b9034 T _GetLastError@0
00ab0370 I __imp__GetLastError@0
$

А вот поиск того, что я знаю, находится в моей программе:

$ i386-mingw32-nm myfile.exe  | grep ends_with
0040a98d T _ends_with
$ 

Я думаю , что это означает, что malloc() в моей библиотеке C предоставляется как прикрытие для системы malloc(), как и GetLastError(), но ends_with() не появляется в система. Но я хотел бы получить второе мнение.

Спасибо!

1 Ответ

0 голосов
/ 22 декабря 2010

Mingw не использует свой собственный malloc, он связывает Windows malloc.Так что да, это потокобезопасно, потому что Windows есть.

...