मैंने कुछ स्थानों को पढ़ा है कि alloca
अप्रचलित है और इसका उपयोग नहीं किया जाना चाहिए और इसके बजाय परिवर्तनीय लंबाई Arrays का उपयोग किया जाना चाहिए।क्या एलोका पूरी तरह से बदला जा सकता है?
मेरा प्रश्न यह है: alloca
परिवर्तनीय लंबाई सरणी द्वारा पूरी तरह से बदला जा सकता है?
typedef struct {
int *value;
size_t size;
} some_type;
void SomeExternalFunction(some_type);
...
void foo(){
//What I thought to do
some_type bar;
bar.value=alloca(sizeof(int)*10);
SomeExternalFunction(bar);
//what should be done without alloca
some_type fizz;
int tmp[10];
fizz.value=tmp;
SoemExternalFunction(fizz);
}
मैं कुछ याद आ रही हूँ या इस alloca का एक वास्तविक अच्छा उपयोग है:
मेरी विशेष उदाहरण में मैं कुछ है कि इस तरह दिखता है? इस उदाहरण के लिए भी मान लें कि किसी कारण से मैं स्टैक
यह वास्तव में एक चर-लंबाई सरणी नहीं है ... जैसा कि आपने निरंतर लंबाई निर्दिष्ट की है। और ... यहां तक कि यदि यह * एक परिवर्तनीय लंबाई थी, तो मैं वास्तव में यह नहीं देख रहा हूं कि कोड की मंशा को थोड़ा अधिक अस्पष्ट बनाने के अलावा, आपको यहां क्या खरीदता है। (जाहिर है यदि आप एक कंपाइलर का उपयोग कर रहे हैं जो परिवर्तनीय लंबाई सरणी का समर्थन नहीं करता है, तो आपके पास दोनों के बीच कोई विकल्प नहीं है) – Shog9
यह भी देखें: http://stackoverflow.com/questions/3452434/in-which- मामलों-एएस-एलोका-उपयोगी (शीर्षक पर आधारित एक डुप्लिकेट होगा, लेकिन मुझे लगता है कि आप वास्तव में कुछ और पूछने की कोशिश कर रहे हैं ... हालांकि क्या नहीं बता सकता) – Shog9