📜  malloc c include - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:44:08.161000             🧑  作者: Mango

malloc函数介绍

在C语言中,动态内存分配一般使用malloc()函数。malloc()函数可以在运行时动态地为变量分配内存空间。因为在编译时我们常常无法确定要分配多少空间,所以动态内存分配成为一种非常常用的技术。

使用方法

malloc()函数定义在头文件stdlib.h中,其函数原型如下:

void *malloc(size_t size);
  • 该函数返回值是void*类型,表示指向一块分配的内存空间的指针。如果该函数无法分配内存,则返回NULL指针。
  • size_t类型表示要分配的字节数,可以通过sizeof运算符获得。

下面是malloc()函数的一般使用方法:

#include <stdlib.h>

int main()
{
    int *p;
    p = (int*)malloc(sizeof(int));
    if(p == NULL)
    {
        printf("No memory available!");
        exit(-1); //异常退出
    }
    *p = 5;
    printf("%d", *p);
    free(p);
    return 0;
}

上面的代码先声明了一个指向int型的指针p,用malloc()函数分配了一块大小为int型变量的空间。如果空间分配失败,则输出一条出错信息并退出程序。如果分配成功,则将该指针指向该内存空间,向其中存储一个整数5,并打印该整数。最后需要用free()函数释放所分配的空间。

注意事项
  • 使用malloc()函数时,变量的内存空间可以动态地分配,但必须手动释放。
void *malloc(size_t size);
void free(void *ptr);
  • 在使用malloc()分配空间时,需要注意以下几点:
    • malloc()分配的空间不会自动初始化为0,因此在使用前需要手动给其赋一个初值。
    • malloc()分配的空间在使用前应该判断其指针是否为NULL。
    • malloc()分配的空间大小不能改变,有需要时可以使用realloc()函数重新分配空间。
  • 在使用free()函数释放空间时,需要注意以下几点:
    • 只能释放动态分配的空间,不能释放非动态分配的空间。
    • 在释放指针所指向的空间后,需要将该指针赋值为NULL,以免出现野指针的问题。