Obstack
ಸಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಲ್ಲಿ, ಒಬ್ಸ್ಟಾಕ್ ಎಂಬುದು ಸಿ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಗೆ ಮೆಮೊರಿ-ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಗ್ನೂ ವಿಸ್ತರಣೆಯಾಗಿದೆ. "ಒಬ್ಸ್ಟ್ಯಾಕ್" ಎಂಬುದು "ಆಬ್ಜೆಕ್ಟ್ಗಳ" (ಡೇಟಾ ಐಟಂಗಳು) ಒಂದು "ಸ್ಟ್ಯಾಕ್" ಆಗಿದ್ದು, ಇದನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ಇದು ಪ್ರದೇಶ ಆಧಾರಿತ ಸ್ಮರಣೆ ನಿರ್ವಹಣಾ ಯೋಜನೆಯನ್ನು ಜಾರಿಗೆ ತರುತ್ತದೆ. ಒಬ್ಸ್ಟಾಕ್ ಕೋಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಸಿ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ಬಳಕೆದಾರರಿಗೆ ಮೆಮೊರಿ ಹಂಚಿಕೆ ಮತ್ತು ನಿರ್ವಹಣೆಯನ್ನು ನೋಡಿಕೊಳ್ಳುತ್ತದೆ. ಮೂಲಭೂತವಾಗಿ, ಅಡೆತಡೆಗಳನ್ನು ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ಒಂದು ರೂಪವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಹಲವಾರು ಸಂದರ್ಭಗಳಲ್ಲಿ ಮ್ಯಾಲೋಕ್/ಫ್ರೀಗಿಂತ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿರುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕಡಿಮೆ ಕಷ್ಟವಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡೇಟಾ ಐಟಂಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕಾಗಿದೆ ಎಂದು ಹೇಳಿ, ಅದರ ಸಂಖ್ಯೆ ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಬೆಳೆಯುತ್ತದೆ ಮತ್ತು ನಂತರ ಅಂತಿಮ ರೂಪವನ್ನು ತಲುಪುತ್ತದೆ; ಅಂತಹ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು obstack.h ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ನಿಗದಿಪಡಿಸಿದ ವಸ್ತುಗಳನ್ನು ಮುಕ್ತಗೊಳಿಸುವುದು ವಸ್ತುವನ್ನು ಒಬ್ಸ್ಟ್ಯಾಕ್ನಲ್ಲಿ ಹೊಸ ಮೆಮೊರಿಯನ್ನು ಹಂಚಿಕೊಂಡ ನಂತರ ಅದನ್ನು ಅದರ ಬಳಕೆಯ ನಂತರ ಮುಕ್ತಗೊಳಿಸಬೇಕು. ಫಂಕ್ಷನ್ಗಳು ಮತ್ತು ಮ್ಯಾಕ್ರೋಗಳು ಒಬ್ಸ್ಟ್ಯಾಕ್ಗಳನ್ನು ಬಳಸುವ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಕಂಪೈಲರ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ಫಂಕ್ಷನ್ಗಳು ಅಥವಾ ಮ್ಯಾಕ್ರೋಗಳು ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ಒಬ್ಸ್ಟ್ಯಾಕ್ ಸೌಲಭ್ಯವು ಎಲ್ಲಾ ಸಿ ಕಂಪೈಲರ್ಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಹಳೆಯ-ಶೈಲಿಯ ಐಎಸ್ಒ ಅಲ್ಲದ ಸಿ ಕಂಪೈಲರ್ನಲ್ಲಿ, ಎಲ್ಲಾ ಒಬ್ಸ್ಟಾಕ್ ಕಾರ್ಯಗಳನ್ನು ವಾಸ್ತವವಾಗಿ ಮ್ಯಾಕ್ರೋಗಳು ಎಂದು ಮಾತ್ರ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ನೀವು ಈ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಕಾರ್ಯಗಳೆಂದು ಕರೆಯಬಹುದು, ಆದರೆ ನೀವು ಅವುಗಳನ್ನು ಬೇರೆ ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ನೀವು ಅವರ ವಿಳಾಸವನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ. ಮ್ಯಾಕ್ರೋಗಳಿಗೆ ಕರೆ ಮಾಡಲು ವಿಶೇಷ ಮುನ್ನೆಚ್ಚರಿಕೆಯ ಅಗತ್ಯವಿರುತ್ತದೆಃ ಅಂದರೆ, ಮೊದಲ ಒಪೆರಾಂಡ್ (ಒಬ್ಸ್ಟಾಕ್ ಪಾಯಿಂಟರ್) ಯಾವುದೇ ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿರಬಾರದು, ಏಕೆಂದರೆ ಇದನ್ನು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಲೆಕ್ಕ ಹಾಕಬಹುದು. ಐಎಸ್ಒ ಸಿ ಯಲ್ಲಿ, ಪ್ರತಿ ಒಬ್ಸ್ಟಾಕ್ ಕಾರ್ಯವು ಸ್ಥೂಲ ವ್ಯಾಖ್ಯಾನ ಮತ್ತು ಕಾರ್ಯ ವ್ಯಾಖ್ಯಾನ ಎರಡನ್ನೂ ಹೊಂದಿದೆ. ಸ್ಥೂಲ ಪರ್ಯಾಯವು ವಿಫಲವಾದರೆ ಕಾರ್ಯದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಸಾಮಾನ್ಯ ಕರೆಯು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸ್ಥೂಲ ವ್ಯಾಖ್ಯಾನವನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ ನೀವು ಇಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ ಆವರಣದಲ್ಲಿ ಕಾರ್ಯದ ಹೆಸರನ್ನು ಬರೆಯುವ ಮೂಲಕ ಕಾರ್ಯದ ವ್ಯಾಖ್ಯಾನವನ್ನು ವಿನಂತಿಸಬಹುದುಃ ಚಾರ * x; ಶೂನ್ಯ * (* ಫಂಕ್ಪಿ) (); x = ಒಬ್ಸ್ಟಾಕ್ _ ಅಲೋಕ್ (ಒಬ್ಟಿಆರ್, ಗಾತ್ರ);/* ಸ್ಥೂಲವನ್ನು ಬಳಸಿ. */x = (ಒಬ್ಸ್ಟಾಕ್ _ ಅಲೋಕ್) (ಒಬಿಟಿಆರ್, ಗಾತ್ರ);/* ಕಾರ್ಯವನ್ನು ಕರೆಯಿರಿ. */ಫಂಕ್ಸಿಪಿ = ಒಬ್ಸ್ಟಾಕ್ _ ಅಲೋಕ್;/* ಕಾರ್ಯದ ವಿಳಾಸವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. */ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯ ಕಾರ್ಯಗಳಿಗಾಗಿ ಐಎಸ್ಒ ಸಿಯಲ್ಲಿ ಇರುವ ಅದೇ ಪರಿಸ್ಥಿತಿಯಾಗಿದೆ. ಬೆಳೆಯುತ್ತಿರುವ ವಸ್ತುಗಳು ಒಬ್ಸ್ಟ್ಯಾಕ್ನಲ್ಲಿನ ಮೆಮೊರಿ ತುಂಡುಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ಬಳಸುವುದರಿಂದ, ಅದರ ಕೊನೆಯಲ್ಲಿ 'ಬೈಟ್ಗಳ' ಗಾತ್ರದ ದತ್ತಾಂಶವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ವಸ್ತುವನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಿದೆ. ಒಂದು ವಸ್ತುವನ್ನು ಹಂತ ಹಂತವಾಗಿ ನಿರ್ಮಿಸುವ ಈ ತಂತ್ರವನ್ನು 'ವಸ್ತುವನ್ನು ಬೆಳೆಸುವುದು' ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಅಡಚಣೆಗಳು-ಗ್ನೂ ಸಿ ಲೈಬ್ರರಿಯ ಅಮೂರ್ತ ದತ್ತಾಂಶ ಪ್ರಕಾರಗಳು ಗ್ನೂ ಪ್ರಾಜೆಕ್ಟ್