Wednesday, March 29, 2017

சி மொழியில் இயக்க நேர நிணைவக ஒதுக்கீடு



 

 

பொதுவாக நிணைவக ஒதுக்கீட்டை இரு வகையாக பிரிக்கலாம்.
1. Static memory allocation
2. dynamic memory allocation
Static memory allocation:
கம்பைல் செய்ய்ம் பொழுது நிணைவக ஒதுக்கீடு நடை பெறுகின்றது. இயக்க நேரத்தில் நிணைவகத்தை அதிகரிக்க முடியாது.பொதுவாக அர்ரேக்களில் பயன்படுகின்றது.
Dynamic memory allocation.
இயக்க நேரத்தில் நிணைவக ஒதுக்கீடு நடைபெருகின்றது.இயக்க நேரத்தில் நிணைவகத்தை அதிகரிக்கலாம்.பொதுவாக linked list-களில் பயன் படுகின்றது.
இதற்கு பின் வரும் ஃப்ங்சன்கள் பயன் படுகின்றது.
malloc()
calloc()
realloc()
free()
இந்த ஃபங்சன்கள் stdlib.h எங்கின்ற ஹெடர் ஃபைலில் உள்ளது.
malloc என்கின்ற function ஆனது ஒற்றை பகுதி நிணவத்தை ஒதுக்கீடு செய்கின்றது.தொடக்க நேரத்தில் தானாக எந்த வித மதிப்பும் இருத்தப்படாது.
நிணைவக ஒதுக்கீடு நடக்க விட்டால் Null மதிப்பிருத்தப்படும்.
Syntax:
ptr=(cast-type*)malloc(byte-size) ;

சான்று நிரல்-1
   #include <stdio.h> 
    #include <stdlib.h> 
    int main(){ 
        int n,i,*ptr,sum=0; 
        printf("Enter number of elements: "); 
        scanf("%d",&n); 
        ptr=(int*)malloc(n*sizeof(int));  //memory allocated using malloc 
        if(ptr==NULL)                      
        { 
            printf("Sorry! unable to allocate memory"); 
            exit(0); 
        } 
        printf("Enter elements of array: "); 
        for(i=0;i<n;++i) 
        { 
            scanf("%d",ptr+i); 
            sum+=*(ptr+i); 
        } 
        printf("Sum=%d",sum); 
        free(ptr); 
        return 0;
    } 

வெளியீடு: 
Enter elements of array: 3
Enter elements of array: 20
10
20
Sum=50.
Calloc()
ஒன்றுக்கும் மேற்பட்ட பகுதி நிணைவகத்தை ஒதுக்கீடு செய்ய பயன்படுகின்றது.தொடக்க மதிப்பாக 0 இருத்தப்படுகின்றது.memory போதிய அளவு இல்லாவிட்டால் Null மதிப்பிருத்தப்படுகின்றது.
Syntax:
ptr=(cast-type*)calloc(number, byte-size)  ;

சான்று நிரல்-2:
#include <stdio.h>
    #include <stdlib.h>
    int main(){
        int n,i,*ptr,sum=0;
        printf("Enter number of elements: ");
        scanf("%d",&n);
        ptr=(int*)calloc(n,sizeof(int));  //memory allocated using calloc
        if(ptr==NULL)
        {
            printf("Sorry! unable to allocate memory");
            exit(0);
        }
        printf("Enter elements of array: ");
        for(i=0;i<n;++i)
        {
            scanf("%d",ptr+i);
            sum+=*(ptr+i);
        }
        printf("Sum=%d",sum);
        free(ptr);
        return 0;
    }
வெளியீடு:
 
Enter elements of array: 3
Enter elements of array: 20
10
15
Sum=45.
 
realloc()
இயக்க நேரத்தில் போதிய அளவு  நிணைவகம் இல்லாவிடில் அதை மேலும் கூட்டுவதற்கு பயன்படுகின்றது.
syntax:
ptr=realloc(ptr, new-size)  ;
free()
ஒதுக்கீடு செய்யப்பட்ட நிணைவகத்தை நிரலின் இயக்க முடிவில் அதை அகற்றப்பயன் படுகின்றது.
Syntax
free(ptr) 
 
                             -முத்து கார்த்திகேயன்,மதுரை
ads Udanz

No comments:

Post a Comment