पर C++ ऑब्जेक्ट की स्मृति को कैसे निर्धारित करें I रनटाइम पर किसी ऑब्जेक्ट का आकार निर्धारित करने का प्रयास कर रहा हूं। आकार काम नहीं करता है क्योंकि यह संकलन समय पर आकार देता है। यहाँ मैं क्या मतलब का एक उदाहरण है:रनटाइम
class Foo
{
public:
Foo()
{
c = new char[1024*1024*1024];
}
~Foo()
{
delete[] c;
}
private:
char *c;
};
इस मामले में, sizeof(Foo)
4 बाइट और नहीं ~ 1GB हो जाएगा। मैं रनटाइम पर फू का आकार कैसे निर्धारित कर सकता हूं? अग्रिम में धन्यवाद।
संभव डुप्लिकेट [यदि मुफ़्त() मेरी सरणी की लंबाई जानता है, तो मैं इसे अपने कोड में क्यों नहीं पूछ सकता?] (Http://stackoverflow.com/questions/2650895/if-free-knows -the-length-of-my-array-why-cant-i-ask-for-it-in-my-own-code) –
आप ऑब्जेक्ट के आकार को नियंत्रित स्मृति की मात्रा से अलग करना चाहते हैं वस्तु। आवंटन जिसे आप 'c'' पर इंगित कर रहे हैं, * ऑब्जेक्ट का हिस्सा कभी नहीं होगा। कक्षा 'फू' के ऑब्जेक्ट्स एक ही आकार होंगे (जो ऊपर दिए गए उदाहरण में डेटा पॉइंटर का आकार होगा)। यह थोड़ा पेडेंटिक है, लेकिन ... – dmckee
'आकार का काम नहीं करता है क्योंकि यह संकलन समय पर आकार देता है।' - वास्तव में नहीं। कभी-कभी रनटाइम आकार होते हैं, खासकर सी 99 और जीसीसी में। (http://stackoverflow.com/questions/2615203/is-sizeof-in-c-evaluated-at-compilation-time-or-run-time/2709634#2709634) – osgx