| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1578 人关注过本帖
标题:结构体里的几个函数问题!
只看楼主 加入收藏
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
结帖率:86.21%
收藏
已结贴  问题点数:5 回复次数:6 
结构体里的几个函数问题!
那几个函数谁给我讲解下啊!
malloc()
calloc()
free()

高手来给我讲下啊!!!!
搜索更多相关主题的帖子: 结构体 
2011-01-31 10:41
gongdian
Rank: 2
等 级:论坛游民
帖 子:127
专家分:11
注 册:2008-3-1
收藏
得分:1 
malloc()  分配内存
calloc()  不但分配了内存,而且对内存进行初始化。就是赋上值了
free()    释放内存,对以上两个通用

2011-01-31 10:57
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:1 
  原型:extern void *malloc(unsigned int num_bytes);   头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。   功能:分配长度为num_bytes字节的内存块   返回值:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。   说明:关于该函数的原型,在旧的版本中malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。   名称解释:malloc的全称是memory allocation,中文叫动态内存分配。   malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。

  calloc是一个C语言函数   函数名: calloc   功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。   跟malloc的区别:   calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。   用 法: void *calloc(unsigned n,unsigned size);   头文件:stdlib.h或malloc.h



小代码,大智慧
2011-01-31 12:59
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:1 
回复 3楼 点线面
“calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据”,学习了
2011-01-31 13:44
nicum
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
收藏
得分:1 
1.malloc 函数
函数原型:void *malloc(unsigned int size);
功能:在内存动态存储区分配一段长度为size个字节的连续空间,如果分配成功,函数返回一个指向该区域起始地址的指针。如因内存空间不够等原因分配不成功,则返回空指针(NULL)。
说明:函数返回的指针类型为void,即不指向任何具体的类型,如果将该指针指向一个具体类型的指针变量,则必须进行强制转换。
        例如:
            int *p;
            p=(int*)malloc(10*sizeof(int));
2.calloc 函数
函数原型:void *calloc(unsigned int n,unsigned int size);
功能:在内存动态存储区分配n个长度为size个字节的连续空间,如果分配成功,函数返回一个指向该区域起始地址的指针。如因内存空间不够等原因分配不成功,则返回空指针(NULL)。
说明:calloc函数用于为具有n个元素的以一维数组动态分配存储空间,每个元素的长度为size个字节。
3.free 函数
函数原型:void free(void *p);
功能:释放指针p指向的存储空间,free函数无返回值。
说明:p为最近一次调用malloc函数或calloc函数返回的指向动态存储区的指针。
2011-02-03 12:00
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:1 
顺便也学习一下。。。
2011-02-03 12:33
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:1 
malloc()  动态分配内存/*所谓动态就是根据实际你需要的情况来分配内存*/
calloc()  不但分配了内存,而且对内存进行初始化/*初始化都为0 */。就是赋上值了
free()    释放内存,对以上两个通用

免费赠送河蟹一只
2011-02-03 13:44
快速回复:结构体里的几个函数问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024266 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved