我想知道在CRT使用的窗口。在每個DLL形成win32 API?只有在visual studio下開發軟件才行?
換句話說,Windows操作系統是通過使用除CRT以外的其他東西來執行malloc,寫入/讀取文件等嗎?
感謝
我想知道在CRT使用的窗口。在每個DLL形成win32 API?只有在visual studio下開發軟件才行?
換句話說,Windows操作系統是通過使用除CRT以外的其他東西來執行malloc,寫入/讀取文件等嗎?
感謝
的C運行時(在Visual Studio 2010 msvcr100.dll的情況下)包含了C標準庫函數的實現。
C運行時以特定於平臺的方式實現,在Windows中,它使用kernel32.dll(Win32 API的一部分)中的函數來執行其任務。
您可以使用Dependency Walker查看導出和導入的函數和DLL依賴關係。
我不知道你想問你的第一個問題。但關於第二種情況:CRT不是特定於Windows的,而是VS特定的。您用VS編譯的C程序將使用MSVCRTxx DLL來提供(大部分)C庫函數。反過來,C庫函數將使用WINAPI來做實際的事情。 WINAPI是與操作系統交流的最後一層。
其他編譯器,如MINGW中的g ++,不會使用MSVCRTxx DLL,但有其自己的。最後,這也將使用WINAPI。例如,在任何實現中,malloc
很可能會調用VirtualAlloc。
好的,但如果在VS下開發C++軟件,爲什麼仍然需要CRT?爲什麼新的實現不直接使用win32 API和VirtualAlloc? – Guillaume07 2011-04-09 11:37:27
也許有CRT和「CRT ++」lib ...... – Guillaume07 2011-04-09 11:44:06
新的確實叫VirtualAlloc。新的實現包含在運行時中。 – 2011-04-09 12:23:49