2012-11-26 24 views
6

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

+0

आपका मतलब है, सामान्य प्रत्यय वाले अक्षर? –

+0

कृपया कोड कोड उदाहरण – SomeWittyUsername

+2

@Dvorak जोड़ें। हां, अगर इसका मतलब है कि एक स्ट्रिंग दूसरे का प्रत्यय है। पूर्व। "एबीसी" और "___abc"। – cleong

उत्तर

-4

सरल उत्तर: नहीं। मुझे ऐसा करने वाले किसी भी कंपाइलर के बारे में पता नहीं है।

+3

आपको टिप्पणी करनी चाहिए, क्योंकि यह वास्तविक जवाब नहीं है –

+0

ठीक है, सवाल यह था कि क्या ऐसे कंपाइलर्स हैं जो इस तरह के स्ट्रिंग पूलिंग करते हैं। ऐसा नहीं है, यह एक तथ्य है, जहां तक ​​मुझे पता है। वे इसे कर सकते थे, लेकिन वे नहीं करते। तो इस पर कोई और टिप्पणी क्यों करनी चाहिए? यह प्रयास के लायक नहीं होगा? – TheBlastOne

+0

हे! मैं 8 downvotes के लिए एक बैज चाहता हूँ! और: उपवास क्यों? :) – TheBlastOne

1

आईएसओ c99 6.5.2.5 यौगिक शाब्दिक

83) इस कार्यान्वयन स्ट्रिंग शाब्दिक और एक ही या अतिव्यापी अभ्यावेदन के साथ लगातार यौगिक शाब्दिक के लिए भंडारण साझा करने के लिए अनुमति देता है।

+0

हू ?? कंपाउंड अक्षर के स्ट्रिंग अक्षर के साथ कुछ लेना देना नहीं है। इसके अलावा, पैर नोट्स आईएसओ मानकों में मानक पाठ नहीं हैं। – Lundin

+0

वास्तव में "पैर नोट्स आईएसओ मानकों में मानक पाठ नहीं हैं" '.... मैं वास्तव में यह थोड़ा सा सार्थक पाया है इसलिए मैंने अभी जवाब दिया .. जानकारी के लिए धन्यवाद .. वैसे भी यह दोनों यौगिक और स्ट्रिंग अक्षर – Omkant

+0

@ लुंडिन: मैंने संक्षिप्त और संक्षेप में उत्तर – Omkant

1

संक्षिप्त उत्तर: शायद।

लंबा उत्तर: यह कार्यान्वयन पर निर्भर करता है। आमतौर पर, सी कंपाइलर्स में "स्ट्रिंग पूल" या इसी तरह की एक ऑप्टिमाइज़र सुविधा होती है, जो कि कंपाइलर को रोम में सभी स्ट्रिंग अक्षर को स्टोर करने में सक्षम बनाता है।

उस स्ट्रिंग पूल की सामग्री को अनुकूलित किया जा सकता है, तो दो बार दिखाई देने वाली एक ही स्ट्रिंग लगभग निश्चित रूप से अनुकूलित हो जाएगी। मुझे लगता है कि अधिकांश कंपाइलर्स उप स्ट्रिंग्स को पहचानने के लिए पर्याप्त स्मार्ट होंगे। लेकिन संरेखण जैसे मंच विचार भी हैं, इसलिए सिर्फ इसलिए कि एक उप स्ट्रिंग मौजूद है, इसका मतलब यह नहीं है कि यह स्मृति स्थान का पुन: उपयोग करने के लिए सबसे प्रभावी होगा।

सी मानक में कुछ भी नहीं है कि गारंटी देता है कि ऐसे अनुकूलन किए जाते हैं। लेकिन साथ ही, मानक को रोकने में मानक में कुछ भी नहीं है।

सुनिश्चित करने के लिए, आपको अपने विशिष्ट कंपाइलर के दस्तावेज़ों को जांचना होगा, या अपने प्रोग्राम को अलग करना होगा, या लिंकर आउटपुट की जांच करनी होगी।