मैं सी में नया हूँ। मैं सरणी बनाना चाहता हूं, और इसके बाद इसे हटा दें, और उसके बाद इसमें एक और सरणी डालें। मैं यह कैसे कर सकता हूं?

c
3
Tom 5 मई 2011, 18:51
1
क्या आप हमें बता सकते हैं कि आपने सरणी कैसे आवंटित की? यदि आपने मॉलोक का उपयोग किया है, तो आप इसे हटाने के लिए मुफ्त का उपयोग कर सकते हैं, फिर एक नया आवंटित करें।
 – 
Rafe Kettler
5 मई 2011, 18:52
1
यदि आप मॉलोक का उपयोग करते हैं, तो आपके पास कोड है। यदि आपके पास कोड है, तो आपको इसे पोस्ट करना चाहिए।
 – 
abelenky
5 मई 2011, 19:17

2 जवाब

सबसे बढ़िया उत्तर

यदि आप सी में गतिशील सरणी की तलाश में हैं तो वे काफी सरल हैं।

1) मेमोरी को ट्रैक करने के लिए एक पॉइंटर घोषित करें,
2) मेमोरी आवंटित करें,
3) मेमोरी का प्रयोग करें,
4) मेमोरी फ्री करें।

int *ary; //declare the array pointer
int size = 20; //lets make it a size of 20 (20 slots)

//allocate the memory for the array
ary = (int*)calloc(size, sizeof(int));

//use the array
ary[0] = 5;
ary[1] = 10;
//...etc..
ary[19] = 500;

//free the memory associated with the dynamic array
free(ary);

//and you can re allocate some more memory and do it again
//maybe this time double the size?
ary = (int*)calloc(size * 2, sizeof(int));

calloc() पर जानकारी यहां पाई जा सकती है, वही बात हो सकती है malloc() के बजाय malloc(size * sizeof(int)); का उपयोग करके पूरा किया जा सकता है

6
Chad 5 मई 2011, 18:56

ऐसा लगता है कि आप पूछ रहे हैं कि क्या आप अलग-अलग समय पर अलग-अलग ढेर-आवंटित क्षेत्रों को इंगित करने के लिए पॉइंटर वैरिएबल का पुन: उपयोग कर सकते हैं। हाँ तुम कर सकते हो:

void *p;         /* only using void* for illustration */

p = malloc(...); /* allocate first array */
...              /* use the array here   */
free(p);         /* free the first array */

p = malloc(...); /* allocate the second array */
...              /* use the second array here */
free(p);         /* free the second array */
2
NPE 5 मई 2011, 18:56