LockBuffer
-
Hallo zusammen,
Bei CString gibt es die Member: LockBuffer und UnLockBuffer. Bei Google und
und bei den MSDN, und in meinen Büchern, habe ich nichts mir verständliches
gefunden. Kann sein dass ich zu unfähig dazu bin. Wozu kann man diese Member gebrauchen ? In dem Zusammenhang gibt es Referenz-Zähler. Bewirken diese, dass
ein CString-Objekt nur einmal gespeichert wird, und erst dann gelöscht wird, wenn kein Objekt mehr auf dieses verweist ?
-
Mal die erste Idee schon versucht: RTFM (Read the Fine MSDN)?
https://msdn.microsoft.com/en-us/library/aa300480(v=vs.60).aspx
LockBuffer wird verwendet um einen Buffer an einer bestimmten Speicherstelle zu halten. Das ist speziell wichtig, wenn ein String an einen ODBC Vorgang gebunden wird. Bei einer Zuweisung eines anderen String könnte ja der Buffer freigegeben und an einer anderen Stelle allokiert werden.
Grundsätzlich solltest Du Dich mal mit dem Design von CString auseinandersetzen. CString hat eine Copy on Write semantic. Und dazu wird ein Referenzzähler verwendet. Wird ein CString kopiert wird kein neuer Speicher angelegt (für den String), entsprechend wird der Referenzzähler erhöht. Die Überrgabe eines CString an eine Funktion ist damit weitaus schneller als manche Implementierungen von std::string.
-
Danke Martin !