मैं कोड का एक टुकड़ा संपादित कर रहा हूं, जो एक बड़ी परियोजना का हिस्सा है, जो सरणी का एक समूह शुरू करने के लिए "कॉन्स्ट" का उपयोग करता है। क्योंकि मैं इन कॉन्स्टेस को पैरामीट्रिज़ करना चाहता हूं, मुझे स्मृति आवंटित करने के लिए "malloc" का उपयोग करने के लिए कोड को अनुकूलित करना होगा। दुर्भाग्य से structs के साथ एक समस्या है: मैं संरचना में गतिशील स्मृति आवंटित करने में सक्षम नहीं हूँ। इसे बाहर करने से मूल कोड में काफी संशोधन हो सकता है।एक संरचना के अंदर गतिशील स्मृति
int globalx,globaly;
struct bigStruct{
struct subStruct{
double info1;
double info2;
bool valid;
};
double data;
//subStruct bar[globalx][globaly];
subStruct ** bar=(subStruct**)malloc(globalx*sizeof(subStruct*));
for(int i=0;i<globalx;i++)
bar[i]=(*subStruct)malloc(globaly*sizeof(subStruct));
};
int main(){
globalx=2;
globaly=3;
bigStruct foo;
for(int i=0;i<globalx;i++)
for(int j=0;j<globaly;j++){
foo.bar[i][j].info1=i+j;
foo.bar[i][j].info2=i*j;
foo.bar[i][j].valid=(i==j);
}
return 0;
}
नोट:: प्रोग्राम कोड में मैं संपादन कर रहा हूँ globalx और globaly थे स्थिरांक एक निर्धारित नाम स्थान में की
यहाँ एक छोटा सा उदाहरण है। अब मैंने "कॉन्स" हटा दिया है ताकि वे एक बार पैरामीटर के रूप में कार्य कर सकें जो एक बार सेट हो।
संक्षेप में: मैं संरचना के अंदर पदार्थ के लिए स्मृति को सही ढंग से आवंटित कैसे कर सकता हूं? बहुत बहुत धन्यवाद!
मैक्स
क्या आप वाकई 'C++' हैं और 'c' नहीं हैं? –
** ** वस्तुओं पर 'malloc' या' free' का उपयोग न करें। निर्माता और विनाशक नहीं कहा जाएगा। 'नया' और 'हटाएं' – Yacoby
का उपयोग करें जिसे खराब सी ++ शैली कहा जाता है। बच्चे, कभी नहीं करते। –