📜  C中的动态内存分配

📅  最后修改于: 2020-10-22 01:42:03             🧑  作者: Mango

C中的动态内存分配

使用c语言进行动态内存分配的概念使C程序员可以在运行时分配内存。可以通过stdlib.h头文件的4个功能以c语言进行动态内存分配。

  • malloc()
  • calloc()
  • realloc()
  • 自由()

在学习上述功能之前,让我们了解静态内存分配和动态内存分配之间的区别。

static memory allocation dynamic memory allocation
memory is allocated at compile time. memory is allocated at run time.
memory can’t be increased while executing program. memory can be increased while executing program.
used in array. used in linked list.

现在让我们快速看一下用于动态内存分配的方法。

malloc() allocates single block of requested memory.
calloc() allocates multiple block of requested memory.
realloc() reallocates the memory occupied by malloc() or calloc() functions.
free() frees the dynamically allocated memory.

C语言中的malloc()函数

malloc()函数分配单个块的请求内存。

它不会在执行时初始化内存,因此它最初具有垃圾值。

如果内存不足,则返回NULL。

malloc()函数的语法如下:

ptr=(cast-type*)malloc(byte-size)

让我们看一下malloc()函数的示例。

#include
#include
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

输出量

Enter elements of array: 3
Enter elements of array: 10
10
10
Sum=30

C语言中的calloc()函数

calloc()函数分配多个块的请求内存。

最初将所有字节初始化为零。

如果内存不足,则返回NULL。

calloc()函数的语法如下:

ptr=(cast-type*)calloc(number, byte-size)

让我们看一下calloc()函数的示例。

#include
#include
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

输出量

Enter elements of array: 3
Enter elements of array: 10
10
10
Sum=30

C语言中的realloc()函数

如果内存不足以容纳malloc()或calloc(),则可以通过realloc()函数重新分配内存。简而言之,它会更改内存大小。

让我们看看realloc()函数的语法。

ptr=realloc(ptr, new-size)

C语言中的free()函数

必须通过调用free()函数释放由malloc()或calloc()函数占用的内存。否则,它将消耗内存,直到程序退出。

让我们看看free()函数的语法。

free(ptr)