Pointer swizzling
કોમ્પ્યુટર વિજ્ઞાનમાં, પોઇન્ટર સ્વિઝલિંગ એ નામ અથવા સ્થિતિના આધારે સંદર્ભોને સીધા પોઇન્ટર સંદર્ભો (મેમરી સરનામાંઓ) માં રૂપાંતરિત કરવાનું છે. તે સામાન્ય રીતે ચલાવવા યોગ્ય ફાઇલ અથવા નિર્દેશક-આધારિત ડેટા સ્ટ્રક્ચર જેવી ડિસ્ક ફાઇલમાંથી સ્થાનાંતરિત કરી શકાય તેવી વસ્તુના ડિસેરિયલાઇઝેશન અથવા લોડ કરતી વખતે કરવામાં આવે છે. રિવર્સ ઓપરેશન, સ્થિતિ-સ્વતંત્ર પ્રતીકો અથવા સ્થાનો સાથે મેમરી પોઇન્ટરને બદલીને, કેટલીકવાર અનસ્વિઝલિંગ તરીકે ઓળખવામાં આવે છે, અને શ્રેણીકરણ (બચત) દરમિયાન કરવામાં આવે છે. ઉદાહરણ આના જેવા ઘટકોનો ઉપયોગ કરીને લિંક કરેલ સૂચિ ડેટા સ્ટ્રક્ચર બનાવવું સરળ છેઃ સ્ટ્રક્ટ નોડ {int ડેટા; સ્ટ્રક્ટ નોડ * આગળ;}; પરંતુ સૂચિને ફાઇલમાં સાચવીને અને પછી તેને ફરીથી લોડ કરવાથી (મોટાભાગની ઓપરેટિંગ સિસ્ટમ્સ પર) દરેક લિંક તૂટી જશે અને સૂચિને નકામી બનાવશે કારણ કે નોડ્સ લગભગ ક્યારેય સમાન મેમરી સ્થાનો પર લોડ થશે નહીં. સૂચિને ઉપયોગી રીતે સાચવવાની અને પુનઃપ્રાપ્ત કરવાની એક રીત એ છે કે દરેક નોડને એક અનન્ય ઓળખ નંબર સોંપવો અને પછી પોઇન્ટરને આગામી નોડના ઓળખ નંબરને સૂચવતા ક્ષેત્રમાં ફેરવીને તેને અનસ્વિઝલ કરવુંઃ સ્ટ્રક્ટ નોડ _ સેવ્ડ {ઇન્ટ ડેટા; ઇન્ટ આઈડી _ નંબર; ઇન્ટ આઈડી _ નંબર _ ઓફ _ નેક્સ્ટ _ નોડ;}; આ પ્રકારના રેકોર્ડ્સને કોઈપણ ક્રમમાં ફાઇલમાં સાચવી શકાય છે અને સૂચિને તોડ્યા વિના ફરીથી લોડ કરી શકાય છે. અન્ય વિકલ્પોમાં આગલા નોડની ફાઇલ ઓફસેટને સાચવવાનો અથવા સાચવેલા રેકોર્ડ્સના ક્રમમાં તેની સ્થિતિ સૂચવતી સંખ્યાને સાચવવાનો અથવા ફાઇલમાં ક્રમમાં નોડ્સને સાચવવાનો સમાવેશ થાય છે. આવી સૂચિ લોડ કર્યા પછી, તેની સંખ્યાના આધારે નોડ શોધવો બોજારૂપ અને બિનકાર્યક્ષમ (શ્રેણીબદ્ધ શોધ) છે. મૂળ "આગામી" સૂચનો સાથે સૂચિને પાર કરવી ખૂબ જ ઝડપી હતી. સૂચિને તેના મૂળ સ્વરૂપમાં રૂપાંતરિત કરવા માટે, અથવા પોઇન્ટરને ફેરવવા માટે, દરેક નોડનું સરનામું શોધવું અને આઈડી _ નંબર _ ઓફ _ નેક્સ્ટ _ નોડ ક્ષેત્રોને સીધા પોઇન્ટરમાં જમણા નોડ પર પાછા ફેરવવાની જરૂર છે. અનસ્વિઝલિંગની પદ્ધતિઓ સંભવિત રીતે અમર્યાદિત સંખ્યામાં સ્વરૂપો છે જેમાં પોઇન્ટરને અનસ્વિઝલ્ડ કરી શકાય છે, પરંતુ કેટલાક સૌથી લોકપ્રિય સ્વરૂપોમાં નીચેનાનો સમાવેશ થાય છેઃ ફાઇલમાં પોઇન્ટેડ-ટુ ઓબ્જેક્ટની ઓફસેટ રેકોર્ડ્સના અમુક ક્રમમાં પોઇન્ટેડ-ટુ ઓબ્જેક્ટની અનુક્રમણિકા પોઇન્ટેડ-ટુ ઓબ્જેક્ટ દ્વારા ધરાવતું અનન્ય ઓળખકર્તા, જેમ કે વ્યક્તિનો સામાજિક સુરક્ષા નંબર; ડેટાબેઝમાં, તમામ પોઇન્ટર આ રીતે અનસ્વિઝલ્ડ થાય છે (વિદેશી કી જુઓ). સામાન્ય કિસ્સામાં સ્વિઝલિંગની પદ્ધતિઓ જટિલ હોઈ શકે છે. નિર્દેશકોના સંદર્ભ આલેખમાં મનસ્વી સંખ્યામાં ચક્રો હોઈ શકે છે; આ જૂના અદ્રશ્ય મૂલ્યોથી નવા સરનામાંઓ પર મેપિંગ જાળવવાનું જટિલ બનાવે છે. સહયોગી એરે મેપિંગ જાળવવા માટે ઉપયોગી છે, જ્યારે પહોળાઈ-પ્રથમ શોધ જેવા અલ્ગોરિધમ્સ ગ્રાફને પાર કરવામાં મદદ કરે છે, જો કે આ બંનેને વધારાના સંગ્રહની જરૂર છે. વિવિધ શ્રેણીબદ્ધ પુસ્તકાલયો સામાન્ય સ્વિજલિંગ પ્રણાલીઓ પ્રદાન કરે છે. જો કે, ઘણા કિસ્સાઓમાં, સ્વીઝલિંગ સરળ ધારણાઓ સાથે કરી શકાય છે, જેમ કે વૃક્ષ અથવા સંદર્ભોની સૂચિ માળખું. સ્વિઝલિંગના વિવિધ પ્રકારો છેઃ ઓટોમેટિક સ્વિઝલિંગ ઓન-ડિમાન્ડ સ્વિઝલિંગ સંભવિત સુરક્ષા નબળાઈઓ સુરક્ષા માટે, અનસ્વિઝલિંગ અને સ્વિઝલિંગને ખૂબ સાવધાની સાથે અમલમાં મૂકવી આવશ્યક છે. ખાસ કરીને, હુમલાખોર દ્વારા ખાસ રચાયેલી ફાઇલની રજૂઆત અપેક્ષિત અને યોગ્ય મર્યાદાની બહારના સરનામાંની ઍક્સેસને મંજૂરી આપી શકે છે. નબળી મેમરી સુરક્ષા ધરાવતી સિસ્ટમોમાં આ ગુપ્ત માહિતીના સંપર્કમાં અથવા કોડમાં ફેરફારને અમલમાં મૂકવાની શક્યતા તરફ દોરી શકે છે. જો સિસ્ટમ ડેટાના અમલીકરણ સામે રક્ષકોનો અમલ કરતી નથી, તો વિવિધ પ્રકારના મૉલવેરની સ્થાપના દ્વારા સિસ્ટમ ગંભીર રીતે સમાધાન કરી શકે છે. સુરક્ષાની પદ્ધતિઓમાં એપ્લિકેશનમાં ડેટા પ્રકાશિત કરતા પહેલા ચકાસણીનો સમાવેશ થાય છેઃ કે દરેક ઓફસેટ વાંચેલા ડેટાની મર્યાદામાં હોય છે. અનુક્રમણિકાઓનું કોષ્ટક અને જે રેકોર્ડ તરફ ધ્યાન દોરવામાં આવ્યું છે તે સમાન રીતે મર્યાદિત છે. તે ઓળખકર્તાઓ અનન્ય છે અને, જો સંવેદનશીલ હોય, તો એનક્રિપ્ટ થયેલ છે. કે તમામ ચલ-લંબાઈની માહિતી વાસ્તવિક ફાળવણીથી વધુ ન હોય તેવી લંબાઈ સુધી મર્યાદિત છે. તે ફાળવણી વાજબી કદની છે. તે ફાળવણીઓ કે જે ડેટા રીડ સાથે લોડ નથી થતી તેને સાફ કરવામાં આવે છે, અથવા અમુક ચોક્કસ પેટર્ન સાથે લોડ કરવામાં આવે છે. આ પણ જુઓ સ્થળાંતર, નિર્દેશક ફેરફારનું આતુર સ્વરૂપ સંદર્ભો વધુ વાંચન (49 પૃષ્ઠો) સ્મૃતિ વ્યવસ્થાપન