C动态分配

栈空间很小,一般只有1~2M。如果需要大量内存空间,需要在堆上分配内存。

引入stdlib.h头文件进行动态内存分配。

内存分配函数

函数 说明
void* malloc(int size) 分配指定大小的内存,不初始化内存数据。
void* calloc(int num, int size) 分配num*size大小的内存,并初始化为0。
void* realloc(void *p,int new_size) 重新分配内存。保留原先数据。
void free(void *p) 释放分配内存。
void* memset(void *p,int v,int size) 将内存初始化为指定字节。
void* memcpy(void *dst,void* src,int size) 将src内存复制到dst。
int count = 100;
int* p = (int*)malloc(sizeof(int)*count);
int i = 0;
int* q = NULL;

if(p)
{
    //使用内存
    for(i=0;i<count;i++)
    {
        a[i] = i;//使用数组的形式操作指针
    }

    q = (int*)reallloc(p,sizeof(int)*200);

    if(q)
    {
        p = q;
    }else
    {
        //重分配内存失败,之前的内存要释放
        free(p);
        a = NULL;
    }

    free(p);
    p = NULL;
}

注意: