Jag sitter med en klass i Borland C++ builder och har kört fast litegranna.. Det beror ju på hur PChar är uppbyggd. Ingen klass alltså; en typedef?Hur fria minnet?
Jag får in ett flertal strängas av typen AnsiiString och måste omvandla dom till PChar, så här ser koden ut för att omvandla till PChar:
<code>
//---------------------------------------------------------------------------
PChar __fastcall MailMessage::AnsiStringToPChar(AnsiString s)
{
PChar r = NULL;
r = StrAlloc(s.Length());
StrPCopy(r, s);
return r;
}
//---------------------------------------------------------------------------
</code>
men nu har ett problem med detta upptäckts, då jag t.ex. gör så här:
<code>
Message.lpszSubject = AnsiStringToPChar(Subject);
</code>
så allokeras en minnesarea för min PChar, frågan är nu hur gör jag för att släppa den?
Minnet släpps väl inte om jag gör så här:
<code>
StrDispose(Message.lpszSubject);
</code>
Några tankar / förslag?Sv: Hur fria minnet?
Använder den kopior av strängen (och det verkar det som) borde det inte vara några problem att bara byta objekt, eller köra nån dispose. Sv: Hur fria minnet?
Vad står det om StrAlloc och StrDispose?
Förmodligen räcker det med det du redan skrivit.
StrAlloc gör väl en "new" eller en "malloc", och StrDispose gör motsvarande "delete" eller "free"?
Och PChar är bara en pekare?
Då har du kopierat informationen en gång, och du släpper upp minnet... inga problem?