自定義(WINNT.H):爲什麼RtlFillMemory/RtlCopyMemory定義爲宏觀
#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
我們看到這個函數實際上是宏,它調用的memset/memcpy的功能。
問題是爲什麼?
的淵源此功能由KERNEL32.DLL(但僅作爲存根ntdll.dll中),那麼是什麼原因把它們作爲CRT函數出口?
也許有關這些被認爲是「不安全的」,並正在被棄用的過程 - http://blogs.msdn.com/b/sdl/archive/2009/05/14/please-join-me-in -welcoming-memcpy-to-the-sdl-rogues-gallery.aspx –
「歷史原因不是答案。」爲什麼不?你想讓我們回答這個問題嗎?你爲什麼告訴我們什麼不是答案? –
@Roger Rowland:這不是答案,因爲不解釋爲什麼被定義爲宏,在本文中也不提及RtlZeroMemory,也不是RtlFillMemoery。 – Xearinox