मेरे पास कुछ सी कोड है जो एक पहेली है। इस कोड के साथ करने के कारण के लिए, मैं सोच रहा हूं कि मैं कैसे बता सकता हूं कि struct
ऑब्जेक्ट ढेर या ढेर पर समाप्त हो रहा है?क्या यह स्टैक या हीप पर है?
वस्तुओं नहींmalloc
या calloc
के साथ बनाया जा रहा है। वे अपने जीवन को एक सरणी के रूप में शुरू करते हैं। इस पोस्ट के प्रयोजनों के लिए, मैं संरचना एएमपी को कॉल करने जा रहा हूं।
Emp myEmp[6];
/* Each myEmp[?] item is populated in code */
वस्तुओं छाँटे गए और विभिन्न तरीकों से और कुछ बिंदु पर छेड़छाड़ कर रहे हैं, वस्तुओं की नकल की और फिर एक सरणी-सूचक को सौंप दिया गया है। प्रतिलिपि memcpy
के माध्यम से की जाती है। वस्तुओं को तब कुछ में डाल दिया जाता है जैसे: Emp* emps_a[6]
।
ऑब्जेक्ट्स एक प्रतिलिपि से जाते हैं और उपरोक्त emps_a में असाइन किए जाते हैं।
int i;
for(i = 0; i < n; i++)
{
emps_a[i] = myEmpsCopy + i;
}
मुझे यकीन नहीं है कि इनमें से कुछ या इनमें से कोई मेरे प्रश्न पर असर डाल रहा है। मुझे कभी भी मुफ्त() की आवश्यकता नहीं है या स्मृति साफ कर रहा है ... मुझे डर है कि मुझे सी
सहायता की बहुत सराहना की गई है।
अंगूठे का नियम: यदि आप मॉलोक कहते हैं, तो आपको नि: शुल्क कॉल करना होगा। उलटा - अगर आपने मॉलोक को फोन नहीं किया है, तो आपको मुफ्त में कॉल नहीं करना चाहिए - आमतौर पर, लेकिन हमेशा नहीं, सच है। (कुछ फ़ंक्शंस आपके लिए मॉलोक को कॉल करेंगे। अगर वे ऐसा करते हैं, तो इसे फ़ंक्शन के दस्तावेज़ में बड़े लाल अक्षरों में लिखा जाना चाहिए।) –