मैं एक समारोह में एक सरणी malloc का उपयोग कर वापस जाने के लिए कोशिश कर रहा हूँ वापसी:नि: शुल्क आबंटित स्मृति से पहले एक समारोह
char* queueBulkDequeue(queueADT queue, unsigned int size)
{
unsigned int i;
char* pElements=(char*)malloc(size * sizeof(char));
for (i=0; i<size; i++)
{
*(pElements+i) = queueDequeue(queue);
}
return pElements;
}
समस्या यह है कि मैं मुक्त करने की जरूरत है यह क्योंकि मेरे MCU है ढेर आकार सीमित है है । लेकिन मैं इसे वापस करना चाहता हूं इसलिए मैं इसे फ़ंक्शन में मुक्त नहीं कर सकता, है ना? क्या मैं फ़ंक्शन के बाहर आवंटित स्मृति को खाली कर सकता हूं (जहां मैं फ़ंक्शन को कॉल करता हूं)। क्या इसके लिए कोई सर्वोत्तम प्रथा है? आपका अग्रिम में ही बहुत धन्यवाद!
आपको इसे फ़ंक्शन के बाहर मुक्त करना होगा। इस बात की कोई आवश्यकता नहीं है कि किसी भी तरह से malloc'd स्मृति को फ़ंक्शन के अंदर मुक्त किया जाना चाहिए। बेशक – futureelite7
। यह 'malloc' का पूरा बिंदु है। यदि आप ऐसा नहीं कर पा रहे थे, तो 'malloc' को कभी भी बनाए जाने का कोई कारण नहीं होता। –