क्या सी में संकलन समय पर फ़ंक्शन द्वारा आवश्यक स्टैक आकार को जानने और आउटपुट करने का कोई तरीका है? यहाँ मैं जानना चाहूंगा क्या है:संकलन समय पर स्टैक उपयोग की जांच
चलो कुछ समारोह लेते हैं:
void foo(int a) {
char c[5];
char * s;
//do something
return;
}
जब इस समारोह संकलन, मुझे पता है कि यह कितना ढेर अंतरिक्ष उपभोग whent यह कहा जाता है जाएगा चाहते हैं। यह एक बड़ा बफर छुपा एक संरचना की ढेर घोषणा पर पता लगाने के लिए उपयोगी हो सकता है।
फ़ाइल foo.c:
मैं कुछ है कि कुछ इस तरह मुद्रित होता रहा हूँ समारोह foo ढेर उपयोग है n
बाइट्स
वहाँ एक रास्ता उत्पन्न विधानसभा कि पता करने के लिए को देखने के लिए नहीं है ? या एक सीमा जिसे संकलक के लिए सेट किया जा सकता है?
अद्यतन: मैं किसी दिए गए प्रक्रिया के लिए रनटाइम स्टैक ओवरफ़्लो से बचने की कोशिश नहीं कर रहा हूं, मैं रनटाइम से पहले खोजने का कोई तरीका ढूंढ रहा हूं, यदि फ़ंक्शन स्टैक उपयोग, संकलक द्वारा निर्धारित अनुसार, के आउटपुट के रूप में उपलब्ध है संकलन प्रक्रिया।
चलो इसे एक और तरीका दें: क्या किसी ऑब्जेक्ट को स्थानीय ऑब्जेक्ट्स का आकार जानना संभव है? मुझे लगता है कि संकलक अनुकूलन मेरा मित्र नहीं होगा, क्योंकि कुछ चर गायब हो जाएंगे लेकिन बेहतर सीमा ठीक है।
यदि आप सोच रहे थे, तो मैंने गुप्त '}' चरित्र टाइप किया है –
प्रश्न मुझे अस्पष्ट लगता है। मुझे लगता है कि अगर आप यह जानना चाहते हैं कि आप इसे क्यों जानना चाहते हैं और डिस्सेप्लर या निष्पादन योग्य (जो कंपाइलर आउटपुट की जांच करने का सबसे आसान तरीका है) की जांच क्यों स्वीकार्य नहीं है, तो शायद किसी को कुछ आसान समाधान मिल सकता है? – Suma