स्थानिक आणि ग्लोबल व्हेरिएबल दरम्यान फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 6 मे 2024
Anonim
W4_1 - Format string vulnerabilities
व्हिडिओ: W4_1 - Format string vulnerabilities

सामग्री


जसे आपण आधी चर्चा केली आहे, व्हेरिएबल हे एक नाव आहे, जे मेमरी स्थानाला दिले जाते, आणि ते वापरण्यापूर्वी ते घोषित केले जाणे आवश्यक आहे. प्रोग्रॅमच्या सुरूवातीस सी मध्ये सर्व व्हेरिएबल्स घोषित केली जातात. सी ++ मध्ये, निर्देशांचा वापर करण्यापूर्वी व्हेरिएबल्स कोणत्याही वेळी घोषित केल्या जाऊ शकतात.

व्हेरिएबल्सना ‘स्थानिक’ आणि ‘ग्लोबल’ व्हेरिएबलमध्ये वर्गीकृत केले जाते, जे आमच्या चर्चेचा मुख्य विषय आहे. येथे लोकल आणि ग्लोबल व्हेरिएबलमधील मुख्य फरक म्हणजे फंक्शन ब्लॉकमध्ये लोकल व्हेरिएबल घोषित केले जाते. याउलट ग्लोबल व्हेरिएबल प्रोग्राम मधील फंक्शन्सच्या बाहेर घोषित केले जाते.

तुलना चार्टसह स्थानिक आणि जागतिक चल यांच्यात आणखी काही फरकांचा अभ्यास करूया.

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. फायदे
  5. तोटे
  6. निष्कर्ष

तुलना चार्ट:

COMPARISON साठी आधार स्थानिक व्हेरिएबल जागतिक व्हेरिएबल
घोषणा फंक्शनमधे व्हेरिएबल्स घोषित केले जातात.
कोणत्याही फंक्शनच्या बाहेर व्हेरिएबल्स घोषित केले जातात.
व्याप्ती
फंक्शनमध्ये, ज्याच्या आत ते घोषित केले जातात.संपूर्ण कार्यक्रमात
मूल्य
कचरा मूल्याच्या साठवणुकीत एकवटलेला स्थानिक चल परिणाम.युनिटिटलाइज्ड ग्लोबल व्हेरिएबल डीफॉल्टनुसार शून्य साठवते.
प्रवेश ज्या घोषणेमध्ये ते घोषित केले जातात त्या फंक्शनमध्ये केवळ विधानांद्वारे प्रवेश केला जातो. संपूर्ण प्रोग्राममधील कोणत्याही विधानाद्वारे प्रवेश.
डेटा सामायिकरणदिले नाहीसुलभ
जीवनफंक्शन ब्लॉकमध्ये प्रवेश केल्यावर आणि बाहेर पडल्यावर नष्ट झाल्यावर तयार केले. आपला प्रोग्राम चालू असताना संपूर्ण अस्तित्वात रहा.
साठवण
निर्दिष्ट केल्याशिवाय स्थानिक चल स्टॅकवर संग्रहित केले जातात.
कंपाईलरद्वारे निश्चित केलेल्या निश्चित ठिकाणी संग्रहित.
मापदंड उत्तीर्णआवश्यकग्लोबल व्हेरिएबल्ससाठी आवश्यक नाही.
चल मूल्यामध्ये बदललोकल व्हेरिएबलमध्ये समाविष्ट केलेली कोणतीही बदल प्रोग्रामच्या इतर फंक्शन्सवर परिणाम करत नाही.फंक्शनच्या ग्लोबल व्हेरिएबलमध्ये लागू केलेले बदल संपूर्ण प्रोग्राममधील बदल प्रतिबिंबित करतात.

स्थानिक व्हेरिएबलची व्याख्या

स्थानिक चल फंक्शन ब्लॉकमध्ये नेहमी घोषित केले जाते. सी मध्ये, कोड ब्लॉकच्या सुरूवातीस स्थानिक चल घोषित केला जातो. सी ++ मध्ये, त्यांच्या वापरापूर्वी कोड ब्लॉकमध्ये कोठेही घोषित केले जाऊ शकते. लोकल व्हेरिएबल्स मध्ये फंक्शनमध्ये लिहिलेल्या स्टेटमेंट्सद्वारेच प्रवेश करता येतो ज्यामध्ये लोकल व्हेरिएबल्स घोषित केली जातात. ते एका अर्थाने सुरक्षित आहेत की समान प्रोग्रामच्या इतर कोणत्याही कार्याद्वारे त्यांच्यापर्यंत प्रवेश करणे शक्य नाही.


फंक्शनचा ब्लॉक अंमलात येईपर्यंत स्थानिक व्हेरिएबल अस्तित्त्वात असतात आणि त्याद्वारे ब्लॉकच्या बाहेर पडल्यानंतर अंमलबजावणी होते. स्थानिक व्हेरिएबल्स त्यांची सामग्री गमावतील म्हणूनच अंमलबजावणीमध्ये ते घोषित केले गेले.

त्यामागचे कारण असे आहे की स्थानिक व्हेरिएबल्स विशेष स्टोरेज निर्दिष्ट केल्याशिवाय स्टॅकवर संग्रहित केल्या जातात. स्टॅक गतिमान स्वरूपाचा आहे आणि मेमरी स्थानातील बदलामुळे एखाद्या कार्याचा ब्लॉक अस्तित्त्वात होताच स्थानिक चल त्यांचे मूल्य का ठेवत नाहीत हे कारणीभूत ठरते.

टीपः
तथापि, ‘स्थिर’ सुधारक वापरुन स्थानिक चलचे मूल्य टिकवून ठेवण्याचा एक मार्ग आहे.

ग्लोबल व्हेरिएबलची व्याख्या

ग्लोबल व्हेरिएबल प्रोग्राममध्ये उपस्थित असलेल्या सर्व फंक्शन्सच्या बाहेर घोषित केले जाते. लोकल व्हेरिएबल्सच्या विपरीत, प्रोग्राममध्ये उपस्थित कोणत्याही फंक्शनद्वारे ग्लोबल व्हेरिएबलमध्ये प्रवेश केला जाऊ शकतो. ग्लोबल व्हेरिएबल्स अधिक विश्वासार्ह नसतात कारण प्रोग्राममध्ये उपस्थित असलेल्या कोणत्याही कार्याद्वारे त्यांचे मूल्य बदलले जाऊ शकते.


संपूर्ण प्रोग्राम पूर्ण होईपर्यंत ते अस्तित्वात आहेत. प्रोग्राम कार्यान्वित होईपर्यंत ग्लोबल व्हेरिएबल्स त्यांचे मूल्य कायम ठेवतात. कारण हे आहे की ते कंपाईलरद्वारे निश्चित केलेल्या मेमरीच्या निश्चित प्रदेशात संग्रहित केले गेले आहेत.

ग्लोबल व्हेरिएबल अशा परिस्थितीत उपयुक्त आहे जिथे एकाधिक कार्ये समान डेटामध्ये प्रवेश करतात. ग्लोबल व्हेरिएबल्सच्या मूल्यामध्ये अवांछित बदल होऊ शकतात म्हणून मोठ्या प्रमाणात ग्लोबल व्हेरिएबल्स वापरणे समस्याप्रधान असू शकते.

  1. लोकल व्हेरिएबल्सना ‘लोकल’ असे म्हणतात कारण त्या फंक्शनमध्ये लिहिलेल्या स्टेटमेंटसच त्यांना माहिती असतात ज्यामध्ये त्या घोषित केल्या जातात आणि त्या फंक्शन ब्लॉकच्या बाहेरील इतर फंक्शनला माहिती नसतात. ग्लोबल व्हेरिएबलच्या बाबतीत, ते प्रोग्राममधील प्रत्येक फंक्शनला परिचित आहेत; म्हणूनच त्यांना ‘जागतिक’ म्हणतात.
  2. प्रोग्राम कार्यान्वित करण्याच्या टप्प्यात येईपर्यंत ग्लोबल व्हेरिएबल्स त्यांचे मूल्य टिकवून ठेवतात, कारण ते कंपाईलरद्वारे निश्चित केलेल्या निश्चित ठिकाणी संचयित केले जातात. स्थानिक चल स्टॅकवर साठवले जातात; म्हणूनच, ते त्यांचे मूल्य टिकवून ठेवत नाहीत कारण ‘स्टॅक’ गतिमान स्वरूपाचा आहे, परंतु संकलक ‘स्टॅटिक’ मॉडिफायर वापरुन त्यांचे मूल्य राखण्यासाठी निर्देशित केले जाऊ शकतात.
  3. जर ग्लोबल आणि लोकल व्हेरिएबल त्याच नावाने घोषित केले गेले असेल तर, कोड ब्लॉकची सर्व स्टेटमेन्ट्स ज्यामध्ये लोकल व्हेरिएबल घोषित केले गेले आहे ते फक्त स्थानिक व्हेरिएबलचा संदर्भ घेतील आणि ग्लोबल व्हेरिएबलवर कोणताही परिणाम करणार नाहीत
  4. प्रोग्रामचे नियंत्रण ब्लॉकमधून बाहेर पडते तेव्हा स्थानिक चल नष्ट होते ज्यामध्ये स्थानिक चल घोषित केला जातो. तथापि, जेव्हा संपूर्ण प्रोग्राम समाप्त केला जातो तेव्हा ग्लोबल व्हेरिएबल नष्ट होते.

फायदे

स्थानिक व्हेरिएबल

  • लोकल व्हेरिएबलचा मुख्य फायदा असा आहे की डेटामध्ये कोणतीही दुर्घटनात्मक बदल होत नाही. चल ब्लॉकच्या आत घोषित केला जातो आणि कोडचा हा ब्लॉक व्हेरिएबलचा वापर करतो आणि अनिष्ट दुष्परिणाम टाळतो.
  • लोकल व्हेरिएबल मर्यादित कालावधीसाठी मेमरी वापरते, जेव्हा व्हेरिएबल असलेले ब्लॉक कार्यान्वित केले जाते.

ग्लोबल व्हेरिएबल

  • जेव्हा आपण प्रोग्राममधील अनेक कार्ये समान डेटा हाताळत असता तेव्हा ग्लोबल व्हेरिएबल्स खूप उपयुक्त असतात.
  • संपूर्ण प्रोग्राममध्ये लागू होणारे बदल ग्लोबल व्हेरिएबलच्या अंमलबजावणीद्वारे सुलभ होते.
  • आम्ही कुठूनही किंवा प्रोग्रामच्या कोणत्याही यादृच्छिक कार्याद्वारे प्रवेश करू शकतो.

तोटे

स्थानिक व्हेरिएबल

  • लोकल व्हेरिएबलची व्याप्ती प्रतिबंधित आहे.
  • डेटा सामायिकरण बंदी.
  • ते कॉल दरम्यानचा डेटा टिकवून ठेवण्यास सक्षम नाहीत कारण स्थानिक चल व्युत्पन्न आणि प्रत्येक प्रविष्टीसह काढले जातात आणि ब्लॉकमधून बाहेर पडतात. तथापि, मूल्ये टिकवून ठेवण्यासाठी स्थिर सुधारकांचा वापर केला जाऊ शकतो.

ग्लोबल व्हेरिएबल

  • मोठ्या प्रमाणात ग्लोबल व्हेरिएबल्सच्या वापरामुळे प्रोग्राम एरर तयार होऊ शकतात.
  • मुख्य समस्या ज्यामुळे उद्भवते ती संपूर्ण कार्यक्रमात पसरलेल्या जागतिक चलांमुळे होणार्‍या बदलांची अपघाती घटना होते.
  • हे कोड रीफॅक्टोरिंग आयोजित करण्याची आवश्यकता देखील वाढवू शकते, ही एक संपूर्ण प्रक्रिया आहे जिथे संपूर्ण प्रोग्राम कोडची पुनर्रचना केली जाते.

निष्कर्ष:

प्रोग्राम लिहिताना स्थानिक आणि ग्लोबल व्हेरिएबल्स दोन्ही आवश्यक आणि तितकेच आवश्यक आहेत. तथापि, मोठ्या प्रमाणात जागतिक चल घोषित करणे एखाद्या मोठ्या प्रोग्राममध्ये समस्याग्रस्त ठरू शकते, कारण यामुळे वैश्विक चलनात अवांछित बदल होऊ शकतात; आणि प्रोग्रामच्या कोणत्या भागामध्ये तो बदल झाला हे ओळखणे कठीण होईल. म्हणूनच, अनावश्यक जागतिक चल घोषित करणे टाळले पाहिजे.