Pointer swizzling
ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ, ಪಾಯಿಂಟರ್ ಸ್ವಿಜ್ಲಿಂಗ್ ಎಂದರೆ ಹೆಸರು ಅಥವಾ ಸ್ಥಾನದ ಆಧಾರದ ಮೇಲೆ ಉಲ್ಲೇಖಗಳನ್ನು ನೇರ ಪಾಯಿಂಟರ್ ಉಲ್ಲೇಖಗಳಾಗಿ (ಮೆಮೊರಿ ವಿಳಾಸಗಳು) ಪರಿವರ್ತಿಸುವುದು. ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಕಡತ ಅಥವಾ ಪಾಯಿಂಟರ್-ಆಧಾರಿತ ದತ್ತಾಂಶ ರಚನೆಯಂತಹ ಡಿಸ್ಕ್ ಕಡತದಿಂದ ಸ್ಥಳಾಂತರಿಸಬಹುದಾದ ವಸ್ತುವನ್ನು ಸ್ಥಳಾಂತರಿಸುವ ಅಥವಾ ಲೋಡ್ ಮಾಡುವ ಸಮಯದಲ್ಲಿ ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ನಡೆಸಲಾಗುತ್ತದೆ. ಮೆಮೊರಿ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಸ್ಥಾನ-ಸ್ವತಂತ್ರ ಚಿಹ್ನೆಗಳು ಅಥವಾ ಸ್ಥಾನಗಳೊಂದಿಗೆ ಬದಲಿಸುವ ರಿವರ್ಸ್ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಕೆಲವೊಮ್ಮೆ ಅನ್ಸ್ವಿಜ್ಲಿಂಗ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಇದನ್ನು ಸೀರಿಯಲೈಸೇಶನ್ (ಉಳಿತಾಯ) ಸಮಯದಲ್ಲಿ ನಡೆಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆ ಈ ರೀತಿಯ ಅಂಶಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಲಿಂಕ್ ಮಾಡಲಾದ ಪಟ್ಟಿ ದತ್ತಾಂಶ ರಚನೆಯನ್ನು ರಚಿಸುವುದು ಸುಲಭಃ ಸ್ಟ್ರಕ್ಟ್ ನೋಡ್ {ಇಂಟ್ ಡೇಟಾ; ಸ್ಟ್ರಕ್ಟ್ ನೋಡ್ * ನೆಕ್ಸ್ಟ್;}; ಆದರೆ ಪಟ್ಟಿಯನ್ನು ಫೈಲ್ಗೆ ಉಳಿಸಿ ನಂತರ ಅದನ್ನು ಮರುಲೋಡ್ ಮಾಡುವುದರಿಂದ (ಹೆಚ್ಚಿನ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ) ಪ್ರತಿ ಲಿಂಕ್ ಅನ್ನು ಒಡೆಯುತ್ತದೆ ಮತ್ತು ಪಟ್ಟಿಯನ್ನು ನಿಷ್ಪ್ರಯೋಜಕವಾಗಿಸುತ್ತದೆ ಏಕೆಂದರೆ ನೋಡ್ಗಳನ್ನು ಒಂದೇ ಮೆಮೊರಿ ಸ್ಥಳಗಳಿಗೆ ಎಂದಿಗೂ ಲೋಡ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಉಪಯುಕ್ತವಾಗಿ ಪಟ್ಟಿಯನ್ನು ಉಳಿಸಲು ಮತ್ತು ಹಿಂಪಡೆಯಲು ಒಂದು ಮಾರ್ಗವೆಂದರೆ ಪ್ರತಿ ನೋಡ್ಗೆ ಒಂದು ವಿಶಿಷ್ಟವಾದ ಐಡಿ ಸಂಖ್ಯೆಯನ್ನು ನಿಯೋಜಿಸುವುದು ಮತ್ತು ನಂತರ ಮುಂದಿನ ನೋಡ್ನ ಐಡಿ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸುವ ಕ್ಷೇತ್ರವಾಗಿ ಅವುಗಳನ್ನು ತಿರುಗಿಸುವ ಮೂಲಕ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಅನ್ಸ್ವಿಜಲ್ ಮಾಡುವುದುಃ ಸ್ಟ್ರಕ್ಟ್ ನೋಡ್ _ ಸೇವ್ {ಇಂಟ ಡೇಟಾ; ಇಂಟ ಐಡಿ _ ನಂಬರ್; ಇಂಟ ಐಡಿ _ ನಂಬರ್ _ ಆಫ್ _ ನೆಕ್ಸ್ಟ್ _ ನೋಡ್;}; ಈ ರೀತಿಯ ರೆಕಾರ್ಡ್ಗಳನ್ನು ಯಾವುದೇ ಕ್ರಮದಲ್ಲಿ ಫೈಲ್ಗೆ ಉಳಿಸಬಹುದು ಮತ್ತು ಪಟ್ಟಿಯನ್ನು ಮುರಿಯದೆ ಮರುಲೋಡ್ ಮಾಡಬಹುದು. ಇತರ ಆಯ್ಕೆಗಳಲ್ಲಿ ಮುಂದಿನ ನೋಡ್ನ ಕಡತ ಆಫ್ಸೆಟ್ ಅನ್ನು ಉಳಿಸುವುದು ಅಥವಾ ಉಳಿಸಿದ ದಾಖಲೆಗಳ ಅನುಕ್ರಮದಲ್ಲಿ ಅದರ ಸ್ಥಾನವನ್ನು ಸೂಚಿಸುವ ಸಂಖ್ಯೆಯನ್ನು ಉಳಿಸುವುದು ಅಥವಾ ಫೈಲ್ಗೆ ಕ್ರಮದಲ್ಲಿ ನೋಡ್ಗಳನ್ನು ಉಳಿಸುವುದು ಸೇರಿವೆ. ಅಂತಹ ಪಟ್ಟಿಯನ್ನು ಲೋಡ್ ಮಾಡಿದ ನಂತರ, ಅದರ ಸಂಖ್ಯೆಯ ಆಧಾರದ ಮೇಲೆ ನೋಡ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ತೊಡಕಿನ ಮತ್ತು ಅಸಮರ್ಥವಾಗಿದೆ (ಸರಣಿ ಹುಡುಕಾಟ). ಮೂಲ "ಮುಂದಿನ" ಪಾಯಿಂಟರ್ಗಳೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ಹಾದುಹೋಗುವುದು ತುಂಬಾ ವೇಗವಾಗಿತ್ತು. ಪಟ್ಟಿಯನ್ನು ಅದರ ಮೂಲ ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಲು, ಅಥವಾ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಸ್ವಿಜ್ ಮಾಡಲು, ಪ್ರತಿ ನೋಡ್ನ ವಿಳಾಸವನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಮತ್ತು ಐಡಿ _ ನಂಬರ್ _ ಆಫ್ _ ನೆಕ್ಸ್ಟ್ _ ನೋಡ್ ಕ್ಷೇತ್ರಗಳನ್ನು ಸರಿಯಾದ ನೋಡ್ಗೆ ನೇರ ಪಾಯಿಂಟರ್ಗಳಾಗಿ ತಿರುಗಿಸುವುದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ. ಸ್ವಿಚ್ ಆಫ್ ಮಾಡುವ ವಿಧಾನಗಳು ಒಂದು ಪಾಯಿಂಟರ್ ಅನ್ನು ಸ್ವಿಚ್ ಆಫ್ ಮಾಡಬಹುದಾದ ಸಂಭಾವ್ಯ ಅನಿಯಮಿತ ಸಂಖ್ಯೆಯ ರೂಪಗಳಿವೆ, ಆದರೆ ಕೆಲವು ಅತ್ಯಂತ ಜನಪ್ರಿಯವಾದವುಗಳೆಂದರೆಃ ಕಡತದಲ್ಲಿನ ಪಾಯಿಂಟೆಡ್-ಟು ಆಬ್ಜೆಕ್ಟ್ನ ಆಫ್ಸೆಟ್ ಕೆಲವು ದಾಖಲೆಗಳ ಅನುಕ್ರಮದಲ್ಲಿ ಪಾಯಿಂಟೆಡ್-ಟು ಆಬ್ಜೆಕ್ಟ್ನ ಸೂಚ್ಯಂಕ ಒಬ್ಬ ವ್ಯಕ್ತಿಯ ಸಾಮಾಜಿಕ ಭದ್ರತಾ ಸಂಖ್ಯೆಯಂತಹ ಪಾಯಿಂಟೆಡ್-ಟು ಆಬ್ಜೆಕ್ಟ್ ಹೊಂದಿರುವ ವಿಶಿಷ್ಟ ಗುರುತಿಸುವಿಕೆ; ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ, ಎಲ್ಲಾ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಈ ರೀತಿಯಲ್ಲಿ ಸ್ವಿಚ್ ಆಫ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ (ವಿದೇಶಿ ಕೀಲಿಯನ್ನು ನೋಡಿ). ಸಾಮಾನ್ಯ ಸಂದರ್ಭದಲ್ಲಿ ಸ್ವಿಜ್ಜ್ಲಿಂಗ್ ವಿಧಾನಗಳು ಸಂಕೀರ್ಣವಾಗಬಹುದು. ಪಾಯಿಂಟರ್ಗಳ ಉಲ್ಲೇಖ ಗ್ರಾಫ್ ಅನಿಯಂತ್ರಿತ ಸಂಖ್ಯೆಯ ಚಕ್ರಗಳನ್ನು ಹೊಂದಿರಬಹುದು; ಇದು ಹಳೆಯ ಬದಲಾಗದ ಮೌಲ್ಯಗಳಿಂದ ಹೊಸ ವಿಳಾಸಗಳಿಗೆ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸುವುದನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸುತ್ತದೆ. ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಅಸೋಸಿಯೇಟಿವ್ ಸರಣಿಗಳು ಉಪಯುಕ್ತವಾಗಿವೆ, ಆದರೆ ಅಗಲ-ಮೊದಲ ಹುಡುಕಾಟದಂತಹ ಕ್ರಮಾವಳಿಗಳು ಗ್ರಾಫ್ ಅನ್ನು ಹಾದುಹೋಗಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಆದಾಗ್ಯೂ ಇವೆರಡಕ್ಕೂ ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ವಿವಿಧ ಸೀರಿಯಲೈಸೇಶನ್ ಲೈಬ್ರರಿಗಳು ಸಾಮಾನ್ಯ ಸ್ವಿಜ್ಜ್ಲಿಂಗ್ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ. ಆದಾಗ್ಯೂ, ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಮರ ಅಥವಾ ಉಲ್ಲೇಖಗಳ ಪಟ್ಟಿ ರಚನೆಯಂತಹ ಊಹೆಗಳನ್ನು ಸರಳಗೊಳಿಸುವ ಮೂಲಕ ಸ್ವಿಜ್ ಮಾಡುವಿಕೆಯನ್ನು ಮಾಡಬಹುದು. ವಿವಿಧ ರೀತಿಯ ಸ್ವಿಜ್ಜ್ಲಿಂಗ್ಗಳೆಂದರೆಃ ಸ್ವಯಂಚಾಲಿತ ಸ್ವಿಜ್ಜ್ಲಿಂಗ್ ಆನ್-ಡಿಮ್ಯಾಂಡ್ ಸ್ವಿಜ್ಜ್ಲಿಂಗ್ ಸಂಭಾವ್ಯ ಭದ್ರತಾ ದೌರ್ಬಲ್ಯಗಳು ಸುರಕ್ಷತೆಗಾಗಿ, ಅನ್ಸ್ವಿಜ್ಲಿಂಗ್ ಮತ್ತು ಸ್ವಿಜ್ಜ್ಲಿಂಗ್ ಅನ್ನು ಬಹಳ ಎಚ್ಚರಿಕೆಯಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು. ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೇಳುವುದಾದರೆ, ಆಕ್ರಮಣಕಾರರ ವಿಶೇಷವಾಗಿ ರಚಿಸಲಾದ ಕಡತದ ಪ್ರಸ್ತುತಿಯು ನಿರೀಕ್ಷಿತ ಮತ್ತು ಸರಿಯಾದ ಮಿತಿಯ ಹೊರಗಿನ ವಿಳಾಸಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸಬಹುದು. ದುರ್ಬಲ ಮೆಮೊರಿ ರಕ್ಷಣೆಯನ್ನು ಹೊಂದಿರುವ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಇದು ಗೌಪ್ಯ ದತ್ತಾಂಶವನ್ನು ಬಹಿರಂಗಪಡಿಸಲು ಅಥವಾ ಕೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಲು ಕಾರಣವಾಗಬಹುದು. ವ್ಯವಸ್ಥೆಯು ದತ್ತಾಂಶದ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ವಿರುದ್ಧ ರಕ್ಷಕರನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸದಿದ್ದರೆ, ವಿವಿಧ ರೀತಿಯ ಮಾಲ್ವೇರ್ಗಳ ಸ್ಥಾಪನೆಯಿಂದ ವ್ಯವಸ್ಥೆಯು ತೀವ್ರವಾಗಿ ರಾಜಿ ಮಾಡಿಕೊಳ್ಳಬಹುದು. ರಕ್ಷಣೆಯ ವಿಧಾನಗಳಲ್ಲಿ ಡೇಟಾವನ್ನು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಬಿಡುಗಡೆ ಮಾಡುವ ಮೊದಲು ಪರಿಶೀಲನೆಗಳು ಸೇರಿವೆಃ ಪ್ರತಿ ಆಫ್ಸೆಟ್ ಡೇಟಾವನ್ನು ಓದುವ ಮಿತಿಯೊಳಗೆ ಇರುತ್ತದೆ. ಸೂಚ್ಯಂಕಗಳ ಕೋಷ್ಟಕ ಮತ್ತು ಸೂಚಿಸಲಾದ ದಾಖಲೆಗಳು ಇದೇ ರೀತಿ ನಿರ್ಬಂಧಿತವಾಗಿವೆ. ಆ ಗುರುತಿಸುವಿಕೆಗಳು ಅನನ್ಯವಾಗಿರುತ್ತವೆ ಮತ್ತು ಸೂಕ್ಷ್ಮವಾಗಿದ್ದರೆ, ಎನ್ಕ್ರಿಪ್ಟ್ ಆಗಿರುತ್ತವೆ. ಎಲ್ಲಾ ವೇರಿಯೇಬಲ್-ಉದ್ದದ ದತ್ತಾಂಶವನ್ನು ನಿಜವಾದ ಹಂಚಿಕೆಯನ್ನು ಮೀರದ ಉದ್ದಗಳಿಗೆ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಆ ಹಂಚಿಕೆಯು ಸಮಂಜಸವಾದ ಗಾತ್ರದ್ದಾಗಿದೆ. ಡೇಟಾ ರೀಡ್ನಿಂದ ಲೋಡ್ ಮಾಡದ ಆ ಹಂಚಿಕೆಗಳನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ, ಅಥವಾ ಕೆಲವು ನಿರ್ದಿಷ್ಟ ಮಾದರಿಯೊಂದಿಗೆ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಮತ್ತಷ್ಟು ಓದುವಿಕೆ (49 ಪುಟಗಳು) ಮೆಮೊರಿ ಮ್ಯಾನೇಜ್ಮೆಂಟ್, ಪಾಯಿಂಟರ್ ಮಾರ್ಪಾಡು ಉಲ್ಲೇಖಗಳ ಒಂದು ಉತ್ಸುಕ ರೂಪವಾದ ಸ್ಥಳಾಂತರವನ್ನು ಸಹ ನೋಡಿ.