English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

saxus  (statz) Agyfasz
#9, Agyfasz (419)
2328 | #2a5e | ^ | Idézet | Wed, 29 Jan 2014 20:39:42 +01
84.3.*.* winhate Mozilla Firefox Hungary *.catv.pool.telekom.hu
"Huh, de elbaszott egy valami ez a cisztadotnet."

FYI., nem csak a C#-ban immutable a string.

"Neked nem kell. Van akinek szüksége lenne a karakterszintű manipulációra és ezt a nyelvek már az ősidők óta lehetővé teszik."

Most is van lehetőség, csinálj belőle karaktertömböt. Ez egy tudatos tervezői döntés volt, gondolom fontosabbnak ítélték meg az előnyeit (ami pl. multithread környezetben és a stringfüggvények egyszerűségében jelentkezik, pl. ha egy string referencián osztozik egy kód több helyen és két helyen próbálná meg módosítani, ami pl. Pascal-ban simán lehetsége), mint azt, hogy néhány ember nem tud időnként karaktert kicserélni, hanem előbb chartömbbé kell alakítania:

var ch = "asdf".ToCharArray();
ch[3] = 'x';
var str = new string(ch);


Egyébként az összes modern nyelv ebbe az irányba indult el.

Az első két sorban az egész stringet állítottam be.


String az referencia típus, nem érték típus. A második sorban lecserélted a pointert a "nem kecske" stringre, a "kecske" string meg a GC-é lesz, ha nincs rá másik referencia. (Bár mivel fordítási időben bekerült, benn lesz az "internálótáborban").

És ez?


Az s-ben egy "akarmi vgy sem" string lesz, ami egy új string példány. De ez akármi másban is így lenne. (Legalábbis nem nagyon tudok olyan nyelvről, ahol a string érték típus, meg nem is lenne túl logikus.)

--

Egyébként most ennek kapcsán elkezdett érdekelni az, hogy anno Pascalban ezt hogyan oldották meg, mert ugyan a Pointer típusokra és az objektumokra figyelni kellett, hogy felszabadítsuk, néhány dologra, köztül a stringekre nem és sosem néztem utána. Nos, a válasz egyszerű, van egy egyszerű refcounteres GC rajta:


Assigning one ansistring to another doesn’t involve moving the actual string. A statement
S2:=S1;

results in the reference count of S2 being decreased with 1, The reference count of S1 is increased by 1, and finally S1 (as a pointer) is copied to S2. This is a significant speed-up in the code.

If the reference count of a string reaches zero, then the memory occupied by the string is deallocated automatically, and the pointer is set to Nil, so no memory leaks arise.


http://www.freepascal.org/docs-html/ref/refsu12.html#


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!