अन्य के रूप में कहा है, आप हटाने की वेक्टर फार्म का उपयोग करना होगा:,
void some_func(size_t n)
{
int* data = new int[n];
. . . // do stuff with the array
delete [] data; // Explicitly free memory
}
इस बात का बहुत सावधान रहें क्योंकि कुछ compilers आपको चेताया नहीं होगा।
इससे भी बेहतर, वेक्टर न्यू/डिलीट का उपयोग करने के लिए बहुत ही कम आवश्यकता है।विचार करें कि क्या आपके कोड std :: वेक्टर का उपयोग करने के लिए परिवर्तित किया जा सकता है:
void some_func(size_t n)
{
std::vector<int> data(n);
. . . // do stuff with the array
} // memory held by data will be freed here automatically
और अगर आप एक स्थानीय क्षेत्र में स्मृति के साथ काम कर रहे हैं, STLSoft के auto_buffer, जो एक आंतरिक बफर से आवंटित करेगा उपयोग करने पर विचार (ढेर को आयोजित, उदाहरण के हिस्से के रूप) यदि संभव हो तो, केवल ढेर करने के लिए जा अगर यह नहीं कर सकते हैं:
void some_func(size_t n)
{
stlsoft::auto_buffer<int, 10> data(n); // only allocates if n > 10
. . . // do stuff with the array
} // memory held by data will be freed here automatically, if any was allocated
पढ़ें more about auto_buffer।
यह अपरिभाषित व्यवहार का आह्वान करता है क्योंकि सरणी को नए [] के साथ आवंटित नहीं किया गया था। –