2010-04-21 10 views

उत्तर

17

लघु जवाब कर रहे हैं:
नहीं

लंबा उत्तर:
हां, यह इतना छोटा होना चाहिए कि यह स्मृति में फिट होगा, लेकिन अन्यथा नहीं, वास्तव में नहीं। यदि कोई अंतर्निहित सीमा है (मुझे विश्वास नहीं है) यह इतना बड़ा है कि आप इसे पहुंचने के लिए वास्तव में कड़ी मेहनत करेंगे।

असल में, तुम मुझे वास्तव में उत्सुक हो गया, तो मैं निम्नलिखित पायथन कार्यक्रम बनाया कोड उत्पन्न करने के लिए:

#! /usr/bin/env python2.6 
import sys; 
cppcode=""" 
#include <iostream> 
#include <cstdlib> 

int main(int argc, char* argv[]) 
{ 
    int %s = 0; 
    return 0; 
} 
""" 

def longvarname(n): 
    str="x"; 
    for i in xrange(n): 
     str = str+"0"; 
    return str; 

def printcpp(n): 
    print cppcode % longvarname(n); 

if __name__=="__main__": 
    if len(sys.argv)==2: 
     printcpp(int(sys.argv[1])); 

यह इच्छित लंबाई चर नाम का उपयोग कर उत्पन्न सी ++ कोड। निम्नलिखित का उपयोग करना:

 
./gencpp.py 1048576 > main.cpp 
g++ main.cpp -o main 

उपर्युक्त मुझे कोई समस्या नहीं देता है (परिवर्तनीय नाम लंबाई में लगभग 1 एमबी है)। मैंने एक गीगाबाइट की कोशिश की, लेकिन मैं स्ट्रिंग निर्माण के साथ इतना स्मार्ट नहीं हूं, और इसलिए जब मैंने gencpp.py बहुत लंबा लिया तो मैंने निरस्त करने का फैसला किया।

वैसे भी, मुझे बहुत संदेह है कि जीसीसी पूर्व-आवंटित नामों के लिए 1 एमबी आवंटित करता है। यह पूरी तरह से स्मृति से घिरा हुआ है।

+0

मैंने इससे पहले कुछ ऐसा किया - मैं कोड (इसे दूसरी मशीन पर) पोस्ट करूंगा, लेकिन मूल रूप से एक पायथन फ़ंक्शन जिसने एक अलग अंतिम चरित्र के साथ 2 चर के साथ सी ++ कोड उत्पन्न किया ताकि यह सुनिश्चित किया जा सके कि लंबे समय से अलग नाम हैं। मुझे 64k मिल गया और सोचा कि यह पर्याप्त है। हालांकि 1 एमबी के साथ कोशिश नहीं की। –

+1

मेरे Win32 mingw पर कंपाइलर/'ld' आपके नमूना – mbx

2

मुझे नहीं पता कि सीमा क्या है (या यदि कोई है), लेकिन मुझे लगता है कि यह अच्छा अभ्यास है कि पैथोलॉजिकल कोड को पकड़ने के लिए एक होना चाहिए, उदाहरण के लिए एक रनवे कोड जनरेटर द्वारा बनाया गया । इसके लायक होने के लिए, सी ++ मानक पहचानकर्ता लंबाई के लिए 1K के न्यूनतम सुझाता है।

+0

@Neil को लिंक नहीं कर सकता, मुझे नहीं लगता कि यह रनवे कोड जनरेटर को पकड़ने के लिए संकलक की ज़िम्मेदारी है। कठोर संसाधन बाधाओं द्वारा अनुमत मनमाने ढंग से लंबाई की अनुमति देने से मुझे सबसे समझदार बात दिखाई देती है। –

4

अतिरिक्त गॉचा, कुछ लिंकर्स की लंबाई नाम की लंबाई पर एक सीमा है। यह पहचानकर्ता लंबाई से अधिक टेम्पलेट और नेस्टेड कक्षाओं के साथ एक मुद्दा हो सकता है लेकिन या तो समस्या को ट्रिगर कर सकता है afaik

संबंधित मुद्दे