This MSND article कहता है SecureZeroMemory()
उन मामलों के लिए अच्छा है जब थोड़ी देर के लिए स्मृति में संग्रहीत संवेदनशील डेटा को जितनी जल्दी हो सके उतनी जल्दी ओवरराइट किया जाना चाहिए। this SO question के उत्तर बताते हैं कि इससे कोई फर्क क्यों पड़ सकता है।जब सुरक्षा कोई मुद्दा नहीं है तो memset() या ZeroMemory() के बजाय SecureZeroMemory() का उपयोग करने का कोई कारण?
अब प्रत्येक मेमोरी ब्लॉक को आरंभ करने के लिए SecureZeroMemory()
का उपयोग करने में कोई बाधा है? एक परियोजना में उदाहरण के लिए मैं निम्नलिखित की तरह कोड देखें:
ICONINFO ii;
::SecureZeroMemory(&ii, sizeof(ICONINFO));
if (::GetIconInfo(hIcon, &ii))
{
//do stuff, then
//release bitmaps
if(ii.hbmMask)
::DeleteObject(ii.hbmMask);
if(ii.hbmColor)
::DeleteObject(ii.hbmColor);
}
क्यों ZeroMemory()
, memset()
या मूल्य प्रारंभ करने के बजाय यहां SecureZeroMemory()
का उपयोग करें? मेरा मतलब है कि संकलक प्रारंभिक निर्णय का अनावश्यक है और इसे अनुकूलित करना चाहता है - मैं इसे क्यों लागू करूं? क्या SecureZeroMemory()
का उपयोग करने का कोई कारण है?