Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ पॉइंटर्स का उपयोग करके किसी भिन्न फ़ंक्शन से स्थानीय चर का उपयोग कैसे करें?


एक बार स्थानीय चर के दायरे से बाहर हो जाने पर आप उस तक नहीं पहुंच सकते। स्थानीय चर होने का यही अर्थ है। हालांकि, आइए एक उदाहरण देखें जहां आप किसी स्थानीय चर की मेमोरी को उसके दायरे से बाहर एक्सेस करने में सक्षम हो सकते हैं।

उदाहरण

#include<iostream>
int* foo() {
   int x = 3;
   return &x;
}
int main() {
   int* address = foo();
   cout << *address;
   *address = 12;
   cout << *address;
}

आउटपुट

यह आउटपुट दे सकता है -

3
12

जैसा कि मैंने पहले उल्लेख किया है, यह कोड काम कर सकता है। हम केवल स्मृति को पढ़ और लिख रहे हैं जो कि x का पता हुआ करता था। मुख्य रूप से, आप फू के दायरे से बाहर हैं, पता कुछ यादृच्छिक स्मृति क्षेत्र का सूचक है। उपरोक्त उदाहरण में, वह स्मृति क्षेत्र मौजूद है और इस समय कुछ और इसका उपयोग नहीं कर रहा है। आप इसका उपयोग जारी रखने से कुछ भी नहीं तोड़ते हैं (आप किसी अन्य प्रक्रिया 'मेमोरी एरिया या किसी अन्य अनधिकृत मेमोरी एरिया का उपयोग नहीं करेंगे), और किसी और ने इसे अभी तक अधिलेखित नहीं किया है। इसलिए, 3 अभी भी वहीं है।

एक वास्तविक कार्यक्रम में, उस स्मृति का लगभग तुरंत पुन:उपयोग किया जा सकता है और आप ऐसा करने से कुछ तोड़ देंगे। ऐसी मेमोरी एक्सेस बग्स को ट्रैक करना और मारना बहुत मुश्किल होता है।

जब आप foo से लौटते हैं, तो प्रोग्राम OS को बताता है कि x की मेमोरी का अब उपयोग नहीं किया जा रहा है और इसे किसी और चीज़ पर फिर से असाइन किया जा सकता है। यदि आप भाग्यशाली हैं और इसे पुन:असाइन किया जाता है, और OS आपको इसका पुन:उपयोग करते हुए नहीं पकड़ता है, तो आप इससे दूर हो सकते हैं।


  1. C++ का उपयोग करके OpenCV में एक रेखा कैसे खींचना है?

    एक रेखा खींचने के लिए हमें दो बिंदुओं की आवश्यकता होती है-आरंभिक बिंदु और अंत बिंदु। रेखा खींचने के लिए हमें कैनवास की भी आवश्यकता होती है। ओपनसीवी, हमारे कैनवास में मैट्रिक्स का उपयोग करके, हमें लाइन के शुरुआती और समाप्ति बिंदुओं को परिभाषित करने की आवश्यकता है। हमें रेखा को भी एक रंग निर्दिष्ट कर

  1. सी ++ का उपयोग कर ओपनसीवी में छवियों को विभिन्न चैनलों में कैसे विभाजित करें?

    RGB इमेज में तीन चैनल होते हैं- लाल, हरा और नीला। वह रंग स्थान जहाँ लाल, हरे और नीले चैनल छवियों का प्रतिनिधित्व करते हैं, RGB रंग स्थान कहलाते हैं। OpenCV में, RGB के बजाय BGR अनुक्रम का उपयोग किया जाता है। इसका मतलब है कि पहला चैनल नीला है, दूसरा चैनल हरा है और तीसरा चैनल लाल है। आरजीबी छवि को विभ

  1. सी ++ का उपयोग कर ओपनसीवी में छवि कैसे लोड और दिखाएं?

    इस विषय में, हम यह निर्धारित करेंगे कि C++ में OpenCV का उपयोग करके छवियों को कैसे लोड और दिखाया जाए। OpenCV में एक छवि लोड करने और दिखाने के लिए निम्नलिखित कार्यों की आवश्यकता होती है। चटाई: मैट कोई फंक्शन नहीं है। यह एक डेटा संरचना है, एक प्रकार का चर। सी ++ में इंट, चार, स्ट्रिंग वेरिएबल प्रकार