C中的静态和动态数组有什么区别?

Joe*_*lin 2 c arrays

可能重复:
数组名是C中的指针吗?
C++静态数组与动态数组?

我正在学习C而且我对以下两个数组之间的区别感到困惑:

int a[10];
Run Code Online (Sandbox Code Playgroud)

int *b = (int *) malloc(10 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

就最基本的水平而言,这两者有什么区别?

P.P*_*.P. 6

int a[10];
Run Code Online (Sandbox Code Playgroud)

在堆栈上分配,并在范围结束后解除分配.

int *b = (int *) malloc(10 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

在堆上分配,并且在程序的整个生命周期中都是活动的,除非它明确地自由 d.