C语言中malloc和free

C语言中动态分配内存的函数为malloc()函数,相应的内存释放函数为free()函数。它们的函数原型分别为:

void *malloc( size_t size );//头文件为stdlib.h或malloc.h
void free( void *memblock );

参数size为分配的字节大小(不是元素个数!)。


对于二级指针的分配,经常会犯糊涂……现在作一个总结:

C语言对二级指针所指内存的分配,先分配外层指针所指内存空间(存放指针值),再分配内层指针所指内存空间(存放对象数值);对内存的释放顺序则是先释放内层指针所指地址空间,最后释放最外层指针所指的地址空间。


下面通过一个具体的程序,进行解释:

float** p = (float**)malloc(240 * sizeof(float));//先给外层指针p分配地址空间
 
//再给内层指针分配地址空间
int i;
for(i = 0; i < 240; i++)
{
  p[i] = (float*)malloc(1216 * sizeof(float));
}
 
......
 
//释放内存
for(i = 0; i < 240; i++)
{
  free(p[i]);//先释放内存指针所指地址空间
}
//最后释放外层指针所指地址空间
free(p);


本文出自 “xinyi_xft” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。