Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C/C++ में malloc () बनाम नया ()

मॉलोक ()

फ़ंक्शन malloc () का उपयोग बाइट्स के अनुरोधित आकार को आवंटित करने के लिए किया जाता है और यह आवंटित मेमोरी के पहले बाइट के लिए एक पॉइंटर देता है। विफल होने पर यह शून्य सूचक देता है।

यहाँ C++ भाषा में malloc() का सिंटैक्स दिया गया है,

pointer_name = (cast-type*) malloc(size);

यहाँ,

pointer_name - पॉइंटर को दिया गया कोई भी नाम।

कास्ट-प्रकार - डेटाटाइप जिसमें आप आवंटित मेमोरी को malloc() द्वारा डालना चाहते हैं।

आकार - बाइट्स में आवंटित मेमोरी का आकार।

यहाँ C भाषा में malloc() का एक उदाहरण दिया गया है,

उदाहरण

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

यह रहा आउटपुट,

Enter elements of array : 32 23 21 8
Sum : 84

उपरोक्त कार्यक्रम में, चार चर घोषित किए गए हैं और उनमें से एक सूचक चर *p है जो मॉलोक द्वारा आवंटित स्मृति को संग्रहीत कर रहा है। हम तत्वों का योग प्रिंट कर रहे हैं।

int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}
printf("\nSum : %d", s);

नया ()

नया ऑपरेटर ढेर में स्मृति आवंटन के लिए अनुरोध करता है। यदि पर्याप्त मेमोरी उपलब्ध है, तो यह मेमोरी को पॉइंटर वेरिएबल में इनिशियलाइज़ करता है और अपना पता देता है।

यहाँ C++ भाषा में new ऑपरेटर का सिंटैक्स दिया गया है,

pointer_variable = new datatype;

मेमोरी को इनिशियलाइज़ करने के लिए सिंटैक्स यहाँ दिया गया है,

pointer_variable = new datatype(value);

यहाँ स्मृति का एक ब्लॉक आवंटित करने के लिए वाक्य रचना है,

pointer_variable = new datatype[size];

यहाँ C++ भाषा में नए ऑपरेटर का उदाहरण दिया गया है,

उदाहरण

#include <iostream>
using namespace std;
int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(223.324);
   int *ptr3 = new int[28];
   *ptr1 = 28;
   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   if (!ptr3)
   cout << "Allocation of memory failed\n";
   else {
      for (int i = 10; i < 15; i++)
      ptr3[i] = i+1;

      cout << "Value to store in block of memory: ";
      for (int i = 10; i < 15; i++)
      cout << ptr3[i] << " ";
   }
   return 0;
}

आउटपुट

Value of pointer variable 1 : 28
Value of pointer variable 2 : 223.324
Value to store in block of memory: 11 12 13 14 15

उपरोक्त कार्यक्रम में, तीन सूचक चर ptr1, ptr2 और ptr3 के रूप में घोषित किए गए हैं। सूचक चर ptr1 और ptr2 को new() का उपयोग करके मान के साथ प्रारंभ किया जाता है और ptr3 स्मृति के आवंटित ब्लॉक को new() फ़ंक्शन द्वारा संग्रहीत कर रहा है।

ptr1 = new int;
float *ptr2 = new float(223.324);
int *ptr3 = new int[28];
*ptr1 = 28;

  1. putwchar () सी/सी ++ में समारोह

    इस लेख में हम C++ STL में putwchar() फंक्शन की कार्यप्रणाली, सिंटैक्स और उदाहरणों पर चर्चा करेंगे। पुटवचर () क्या है? putwchar() फ़ंक्शन C++ STL में एक इनबिल्ट फ़ंक्शन है, जिसे हेडर फ़ाइल में परिभाषित किया गया है। putwchar () फ़ंक्शन का उपयोग मानक आउटपुट डिवाइस पर विस्तृत वर्ण लिखने के लिए किया जा

  1. memcpy() सी/सी++ में

    इस लेख में हम C++ STL में memcpy() फंक्शन की कार्यप्रणाली, सिंटैक्स और उदाहरणों पर चर्चा करेंगे। memcpy() क्या है? memcpy() फ़ंक्शन C++ STL में एक इनबिल्ट फ़ंक्शन है, जिसे हेडर फ़ाइल में परिभाषित किया गया है। memcpy () फ़ंक्शन का उपयोग मेमोरी के ब्लॉक को कॉपी करने के लिए किया जाता है। इस फ़ंक्शन क

  1. सी/सी ++ में एए पेड़?

    कंप्यूटर विज्ञान में AA ट्री को संतुलित ट्री के रूप में परिभाषित किया गया है, जो ऑर्डर किए गए डेटा को कुशलतापूर्वक संग्रहीत करने और पुनर्प्राप्त करने के लिए लागू किया गया है। एए पेड़ों को लाल-काले पेड़ की विविधता के रूप में माना जाता है, बाइनरी सर्च ट्री का एक रूप जो प्रविष्टियों के कुशल जोड़ और विल