जब मैं देव सीपीपी में इस कार्यक्रम को चलाता हूं, तो टास्क मैनेजर का कहना है कि यह लगभग 7 9 एमबी है। GNU सी ++ 4.7 के साथ Codeforces कहना है कि यह 79,112 किलोबाइटएक बूल एक इंट के रूप में ज्यादा स्मृति क्यों लेता है? सी ++
#include<stdio.h>
const int N=10010,K=1010;
struct TPos
{
int charge;
bool ex;
TPos()
{
charge=1<<30;
ex=false;
}
};
TPos d[N][K];
int main()
{
while(1);
return 0;
}
लेकिन जब पूर्व parametr टिप्पणी की है:
#include<stdio.h>
const int N=10010,K=1010;
struct TPos
{
int charge;
//bool ex;
TPos()
{
charge=1<<30;
//ex=false;
}
};
TPos d[N][K];
int main()
{
//while(1);
return 0;
}
यह केवल 39,536 KB है। मैंने सोचा कि बुलियन को एक बाइट का उपयोग करना चाहिए। यह आकार को दोगुना क्यों करता है?
[। पैडिंग] (http://en.wikipedia.org/wiki/Data_structure_alignment#Data_structure_padding) – BoBTFish
आप __attribute__ की कोशिश कर सकते ((पैक किया गया)) यह देखने के लिए कि यह कैसा दिखता है (लेकिन यह आमतौर पर प्रदर्शन के लिए एक अच्छा अभ्यास नहीं है) – Leeor
यदि आप 'चार्ज' के लिए सभी इंट-बिट्स की आवश्यकता नहीं है तो आप स्मृति आकार को 'आकार' (int) 'में भी कम कर सकते हैं। नीचे मेरा जवाब देखें। (हो सकता है कि चार्ज में 2 की एक या कम शक्ति कोई बड़ा अंतर न करे।) – Tobias