मान लीजिए कि मैं वेक्टर की लंबाई और उसके मूल्यों का प्रतिनिधित्व करने वाली संरचना को परिभाषित करना चाहता हूं:
struct Vector{
double* x;
int n;
};
अब, मान लीजिए कि मैं एक वेक्टर y को परिभाषित करना चाहता हूं और इसके लिए मेमोरी आवंटित करना चाहता हूं।
struct Vector *y = (struct Vector*)malloc(sizeof(struct Vector));
इंटरनेट पर मेरी खोज बताती है कि मुझे एक्स के लिए मेमोरी अलग से आवंटित करनी चाहिए।
y->x = (double*)malloc(10*sizeof(double));
लेकिन, ऐसा लगता है कि मैं दो बार y-> x के लिए मेमोरी आवंटित कर रहा हूं, एक y के लिए मेमोरी आवंटित करते समय और दूसरा y-> x के लिए मेमोरी आवंटित करते समय, और यह मेमोरी की बर्बादी लगती है। यह बहुत सराहा जाता है अगर मुझे पता चल जाए कि कंपाइलर वास्तव में क्या करता है और दोनों y, और y-> x को इनिशियलाइज़ करने का सही तरीका क्या होगा।
अग्रिम में धन्यवाद।
malloc()
सी में रिटर्न वैल्यू मत डालें । मैं कभी नहीं समझ पाऊंगा कि सभी को ऐसा करने की आवश्यकता क्यों महसूस होती है। :(