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?