1、首先回顾一下内存分配的有关事实。所有的程序都必须留出足够内存来存储他们使用的数据。一些内存分配是自动完成的。如:

float x;

char place[]="dancing oxen creek".

于是系统将留出存储float或者字符串足够的内存空间,也可明确要求确切的内存,int a[100];这一声明留出100个内存位置。每个位置可存储一个int值。c的功能远非如此。可以在程序运行时分配更多的内存。主要工具函数就是malloc(),参数:所需字节数。然后malloc()找到可用内存中一个大小适合的块。内存是匿名的,也就是说malloc()分配了内存,但没有为他指定名字。然而它却可以返回那块内存第一个字节的地址。因此,可以把该地址赋值给一个指针变量,并使用该指针来访问那块内存。malloc()函数可用来返回数组指针、结构指针等等。我们使用malloc()来创建一个数组,可以在程序运行时使用malloc()请求一个存储块,另外还需要一个指针来存放该块在内存中的位置。

double * ptd;

ptd=(double*)malloc(30 * sizeof(double));请求30个double类型的空间,把ptd指向该空间的位置。一般来说,对于每个malloc()函数调用,应该调用一次free(),free()的参数是malloc()返回的地址,它释放先前分配的内存。