Domanda

Nel tentativo di mattina per capire se malloc() nel mio programma cross-compilato mingw32 è threadsafe o no, mi sono imbattuto nm sul binario. I risultati:

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

Per fare un confronto, ecco un ricerca GetLastError, che viene utilizzato ma non definito nel mio programma:

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

E qui è una ricerca di qualcosa che so è nel mio programma:

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

I pensare che questo significa che malloc() nella mia libreria C è fornito come copertura per un malloc() sistema, in quanto è GetLastError(), ma che ends_with() non compare nel sistema. Ma mi piacerebbe un secondo parere.

Grazie!

È stato utile?

Soluzione

MinGW non usa il proprio malloc, collega il malloc di Windows. Quindi sì, è threadsafe, perché Windows è.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top