malloc与直接定义变量的区别

//vc6.0编译环境下代码
#include "stdio.h"
#include "malloc.h"
#define N 5
 
//malloc申请内存 
int *function1()
{
    int i;
    int *a=(int *)malloc(sizeof(int)*N);
    for(i=0;i<N;i++)
    {
        a[i]=i+1;
    }
    return a;
}
 
//直接声明
int *function2() 
{
    int a[N];
    int i;
    for( i=0;i<N;i++){
        a[i]=i+1;
    }
    return a;
}
 
int main()
{
 
    int *a=function1();
    int i;
     int *b=function2() ;
    for( i=0;i<N;i++)
    {
        printf("%d",a[i]);
    } 
    free(a);
    printf("\n");
    

    for(i=0;i<N;i++)
    {
        printf("%d",b[i]);
    } 
    printf("\n");    
}

 

malloc与直接定义变量的区别