为什么函数'getAr'中定义的局部变量可以在main中访问?

use*_*233 2 c

int *getAr() 
{ 
         int *a; 
         int i; 
         a=(int*)malloc(sizeof(int)*10); 
         for(i=0;i<10;i++) 
            a[i]=i; 
         return(a); 
} 
int main() 
{ 
         int *a; 
         int i; 
         a=getAr(); 
         for(i=0;i<10;i++) 
            printf("%d\t",a[i]); 
         printf("\n"); 
         return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

输出是:

0 1 2 3 4 5 6 7 8 9

Per*_*t28 5

当你malloc(),内存从堆中取出.函数返回时不会卸载(与堆栈不同).