मेरे पास कुछ अलग-अलग फ़ंक्शंस में कुछ कोड है जो इस तरह कुछ दिखता है:मैं कॉलिंग फ़ंक्शन में मेमोरी आवंटित कैसे कर सकता हूं (इसे पॉइंटर-पैरामीटर के माध्यम से) वापस कर सकता हूं?
void someFunction (int *data) {
data = (int *) malloc (sizeof (data));
}
void useData (int *data) {
printf ("%p", data);
}
int main() {
int *data = NULL;
someFunction (data);
useData (data);
return 0;
}
someFunction()
और useData()
अलग मॉड्यूल (* .c फ़ाइलों) में परिभाषित हैं।
समस्या यह है कि, जबकि मॉलोक ठीक काम करता है, और आवंटित स्मृति someFunction
में प्रयोग योग्य है, फ़ंक्शन वापस आने के बाद समान स्मृति उपलब्ध नहीं है।
प्रोग्राम का एक उदाहरण रन here देखा जा सकता है, जिसमें आउटपुट विभिन्न मेमोरी पतों को दिखाता है।
क्या कोई मुझे बता सकता है कि मैं यहां क्या कर रहा हूं, और मैं यह कोड कैसे काम कर सकता हूं?
संपादित करें: ऐसा लगता है कि मुझे ऐसा करने के लिए डबल पॉइंटर्स का उपयोग करने की आवश्यकता है - जब मैं वास्तव में डबल पॉइंटर्स का उपयोग करता हूं तो मुझे वही काम करने के बारे में कैसे जाना होगा? तो उदा। डेटा
int **data = NULL; //used for 2D array
है तो क्या मुझे फ़ंक्शन कॉल में ट्रिपल पॉइंटर्स का उपयोग करने की आवश्यकता है?
हाँ, आप की आवश्यकता होगी ट्रिपल प्वाइंटर्स – vpram86