Win32 API函数与CRT对应函数(例如CopyMemory与memcpy)

9 c c++ winapi

在编写Win32 C/C++代码时,使用特定于Windows的函数lstrcpynCopyMemory代替相应的CRT函数(除了CRT函数的可移植性)是否有任何优势(例如性能?)?

Chr*_*n.K 8

至少有一些CRT函数在内部使用Win32函数.此外,CRT还需要额外的初始化(例如,用于函数的特定于线程的数据strtok)和清理,您可能不希望发生这种情况.

你可以在别的在包括CRT创建一个简单的Win32应用程序,没有任何依赖性(就像你可以使用创建一个纯NT的应用程序NTDLL.DLL-我想smss.exe的Windows是这样一个过程BTW).

话虽如此,我认为对于大多数无关紧要的应用程序而言.

更新由于人们似乎对各个函数的差异如此着迷,特别是memcpyCopyMemory,我想补充一点,并非 CRT中的所有函数都是Win32中的函数.当然,有些可以在没有Win32任何帮助的情况下实现(实际上memcpy是一个很好的例子),而其他(明智的)则不能.我相信@Merdad在他的回答中暗示了一些东西.

因此,除了便携性之外,我认为性能不是支持反对使用CRT 的下一个最佳论据.你应该选择最合适的,通常是CRT.并且没有什么可以反对使用单独的Win32函数(与CRT等效),你觉得合适.