2011-03-21 16 views
6

धक्का वहाँ जंगली भैंसों में एक शुद्ध धक्का पार्सर के लिए ढेर प्रबंधन के बजाय malloc()/मुक्त() के लिए अपने खुद के संभाजक/deallocator कार्यों निर्दिष्ट करने के लिए कोई तरीका है?ढेर से निपटने शुद्ध पार्सर

उत्तर

3

अधिकांश बाइसन की स्मृति आवंटन के मैक्रो के लिए पुनः निर्देशित किया जा सकता है - प्रस्तावना में (%{ और %} के बीच) आप

#define YYMALLOC mymalloc 
#define YYFREE myfree 

लिख सकते हैं और बाइसन तो mymalloc और myfree बजाय malloc और free कॉल करेंगे। हालांकि, यह अपेक्षा करता है कि आप जो भी फ़ंक्शन प्रदान करते हैं, वह मानक malloc और free के समान सटीक हस्ताक्षर के लिए प्रदान करता है; इसे अतिरिक्त/अलग तर्क पारित करने का कोई तरीका नहीं है। और अगर मैं आप थे तो मैं फ़ंक्शन-जैसी मैक्रोज़ का उपयोग नहीं करता। इससे भी बदतर, मेरी प्रतिलिपि में (बाइसन 2.4.1) yypstate_new सीधे malloc पर कॉल करता है, बिना ओवरराइड संभव है - यह तर्कसंगत रूप से एक बग है।

+0

हाँ मैं यह पहले से ही पता चला गया है, उत्पन्न स्रोत को देखकर। +1 और स्वीकार किया, एक अच्छा जवाब। इसमें 2.4.3 में यह बग नहीं है। – Flavius

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