zwalniać pamięć czy nie

0

Napisałem sobie kilka takich funkcji

		 IntPtr p3 = Marshal::StringToHGlobalAnsi(SipDomain);		
		 cstr = static_cast<char*>(p3.ToPointer());
		 cfg.cred_info[0].realm = pj_str(cstr);
		 
		
		 IntPtr p4 = Marshal::StringToHGlobalAnsi(SipPassword);		
		 cstr = static_cast<char*>(p4.ToPointer());
		 cfg.cred_info[0].data = pj_str(cstr);
 

Czy jak nie zwolnię pointerów p3 i p4 pod koniec bloku funkcją Marshal::FreeHGlobal(p); to same się zwolnią czy zostaną śmieci w pamięci?

2

Gdybyś w końcu nauczył się korzystać z dokumentacji to nie musiałbyś zadawać takich pytań.

StringToHGlobalAnsi is useful for custom marshaling or when mixing managed and unmanaged code. Because this method allocates the unmanaged memory required for a string, always free the memory by calling FreeHGlobal.
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.stringtohglobalansi.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1