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

C में calloc() बनाम malloc()

calloc()

फ़ंक्शन calloc() का मतलब contiguous allocation (सन्निकट आवंटन) है। यह malloc() के समान काम करता है लेकिन यह समान आकार के मेमोरी के कई ब्लॉक्स एलोकेट करता है।

यहां C भाषा में calloc() का सिंटैक्स है:

void *calloc(size_t number, size_t size);

यहां,

number - एलोकेट किए जाने वाले ऐरे के तत्वों की संख्या।

size - बाइट्स में एलोकेटेड मेमोरी का आकार।

यहां C भाषा में calloc() का एक उदाहरण है:

उदाहरण

#include <stdio.h>
#include <stdlib.h>

int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) calloc(n, sizeof(int));
   if (p == NULL) {
      printf("\nएरर! मेमोरी एलोकेट नहीं हुई।");
      exit(0);
   }
   printf("\nऐरे के तत्व दर्ज करें: ");
   for (i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nयोग: %d", s);
   return 0;
}

आउटपुट

ऐरे के तत्व दर्ज करें: 2 24 35 12
योग: 73

उपरोक्त प्रोग्राम में, मेमोरी ब्लॉक calloc() द्वारा एलोकेट किया जाता है। यदि पॉइंटर वेरिएबल null है, तो कोई मेमोरी एलोकेशन नहीं है। यदि पॉइंटर वेरिएबल null नहीं है, तो यूजर को ऐरे के चार तत्व दर्ज करने होंगे और फिर तत्वों का योग निकाला जाता है।

malloc()

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

यहां C भाषा में malloc() का सिंटैक्स है:

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

यहां,

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

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

size - बाइट्स में एलोकेटेड मेमोरी का आकार।

यहां 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("\nएरर! मेमोरी एलोकेट नहीं हुई।");
      exit(0);
   }
   printf("\nऐरे के तत्व दर्ज करें: ");
   for (i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nयोग: %d", s);
   return 0;
}

आउटपुट

ऐरे के तत्व दर्ज करें: 32 23 21 8
योग: 84

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

मुख्य अंतर

विशेषता calloc() malloc()
पैरामीटर्स दो (number, size) एक (size)
इनिशियलाइज़ेशन एलोकेटेड मेमोरी को शून्य से इनिशियलाइज़ करता है मेमोरी अनइनिशियलाइज़्ड रहती है (गार्बेज वैल्यू)
उपयोग ऐरे और स्ट्रक्चर्स के लिए बेहतर सिंगल मेमोरी ब्लॉक के लिए सामान्य उपयोग
प्रदर्शन थोड़ा धीमा (ज़ीरोइंग के कारण) थोड़ा तेज़
  1. फ्लडिंग बनाम फिक्स्ड रूटिंग एल्गोरिदम फ्लडिंग बनाम फिक्स्ड रूटिंग एल्गोरिदम

    फ्लडिंग और फिक्स्ड रूटिंग, इंटरमीडिएट राउटर्स के माध्यम से सोर्स से डेस्टिनेशन तक डेटा पैकेट्स ट्रांसमिट करने की विधियां हैं जो ट्रांसमिशन लाइन्स द्वारा जुड़े होते हैं। फ्लडिंग एक नॉन-एडाप्टिव रूटिंग तकनीक है जो इस सरल विधि का पालन करती है – जब एक डेटा पैकेट राउटर पर आता है, तो उसे उस लिंक को छोड़क

  1. सेटिंग्स और सिंकिंग: फ़ायरफ़ॉक्स बनाम क्रोम सेटिंग्स और सिंकिंग: फ़ायरफ़ॉक्स बनाम क्रोम

    चाहे आप मुख्य रूप से अपने ब्राउज़र का उपयोग काम या खेल के लिए करते हों; गति, विश्वसनीयता, सेटिंग्स, और सुविधाएं आवश्यक हैं। फ़ायरफ़ॉक्स और क्रोम शीर्ष ब्राउज़र विकल्प हैं, प्रत्येक के अपने लाभ हैं। तो, क्या दोनों के बीच सर्वश्रेष्ठ विकल्प है? आइए कुछ अंतरों को देखें। ब्राउज़र सेटिंग्स ब्राउज़र सेटिं

  1. विंडोज फोन पर HERE, माइक्रोसॉफ्ट और विंडोज मैप्स की तुलना: पेशेवरों, विपक्ष और ऑफलाइन नेविगेशन विंडोज फोन पर HERE, माइक्रोसॉफ्ट और विंडोज मैप्स की तुलना: पेशेवरों, विपक्ष और ऑफलाइन नेविगेशन

    सुनो, सुनो। मैं यहां हूं, क्या तुम मुझे एक फरिश्ता भेजोगे। किसी भी मामले में, आज मैं विंडोज फोन के लिए उपलब्ध तीन ऑफलाइन नेविगेशन सूट के पेशेवरों और विपक्षों पर चर्चा करना चाहूंगा, और वे एक-दूसरे के खिलाफ कैसे खड़े हैं। क्योंकि HERE मैप्स अब WP10 पर उपलब्ध नहीं हैं और WP8 पर अब अपडेट नहीं किए जाते ह