下例是一个动态分配的程序: #include 上例中动态分配了10个整型存储区域,然后进行赋值并打印。例中if((array(int *) malloc(10*sizeof(int)))==NULL)语句可以分为以下几步: 1)分配10个整型的连续存储空间,并返回一个指向其起始地址的整型指针 2)把此整型指针地址赋给array 3)检测返回值是否为NULL 2、free函数 由于内存区域总是有限的,不能不限制地分配下去,而且一个程序要尽量节省资源,所以当所分配的内存区域不用时,就要释放它,以便其它的变量或者程序使用。这时我们就要用到free函数。 其函数原型是: void free(void *p) 作用是释放指针p所指向的内存区。 其参数p必须是先前调用malloc函数或calloc函数(另一个动态分配存储区域的函数)时返回的指针。给free函数传递其它的值很可能造成死机或其它灾难性的后果。 注意:这里重要的是指针的值,而不是用来申请动态内存的指针本身。例: int *p1,*p2; malloc返回值赋给p1,又把p1的值赋给p2,所以此时p1,p2都可作为free函数的参数。 malloc函数是对存储区域进行分配的。 free函数是释放已经不用的内存区域的。 所以由这两个函数就可以实现对内存区域进行动态分配并进行简单的管理了。 |
正在阅读:链表的C语言实现之动态内存分配链表的C语言实现之动态内存分配
2005-07-13 10:22
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键