动态内存是相对内存而言的,所谓动态和静态就是☞内存的分配方式。动态内存是☞堆上分配的内存,而静态内存是☞在☞在栈上分配的内存。前面所写的程序大多数都在栈上分配的,比如局部变量,形参,函数调用。栈上分配的内存是由系统分配和释放的,空间有限,在复合语句或者函数运行结束后就会被系统自动释放。而堆上分配的内存是由程序通过编程自己动手分配和释放的,空间很大,存储自由。堆和栈后面还会讲。
传统数组的缺点
“传统数组”就是前面所使用的数组,但他是有缺点。当你知道他有什么缺点之后,你就知道为什么需要动态的内存分配了,与动态内存分配相比,传统数组主要有以下几个缺点:
1数组的长度必须事先指定,而且只能是常量,不能是变量,比如像下面就是对的:
int a[5];
2 因为数组长度只能是常量,所以他的长度不能在函数运行的过程当中动态地扩展和缩小。
3 对于数组所占用的内存程序员无法手动释放,只能在函数运行结束后由系统自动释放。也是因为函数运行之后系统为数组分配的内存空间就会被自动释放,所以在一个函数中定义的数组只能该函数运行期间被其他函数使用。而动态内存就不存在这个问题,因为动态内存是由程序员动手编程释放的,所以(ˇˍˇ) 想~什么时候释放,就什么时候释放。只要程序员不手动释放,就算函数运行结束,动态分配的内存空间也不会被释放,其他函数仍可能使用他,除非是整个程序员运行结束后,这个时候系统为该程序分配的所有内存空间都会被释放。