在c语言中,当我们在构建一个链表的时候,难以避免的会涉及到内存的动态分配,内存分配的动态分配涉及到malloc,calloc以及relloc函数,在我们使用是时,他们有什么小小的区别呢?1,malloc(),这个函数的使用格式是:(类型说明符 *)malloc(size);他的作用是在堆区分配一块size字节的连续的内存空间,函数的返回值是申请内存空间的首地址,例如申请100字节的空间:char *p = (char*)maolloc(100);这段代码的含义就是申请100个存放char型的动态内存空间。
2,calloc()函数和malloc函数有什么区别呢?
首先,calloc()函数的格式为:(类型说明符*)calloc(n,size);他是申请n个size的连续的动态内存,除此之外他和malloc很大的区别是calloc申请的动态内存空间是干净的内存,当你输出内存中的数据时它是NULL,而malloc()申请的动态内存空间不一定是干净的,当你输出时有可能会打印出一些未知的数据。malloc和calloc的区别
3,rellc()函数是用于你的动态内存空间不足以存储你所要储存的信息时,需要再追加一段内存,函数的格式是:(类型说明符*)relloc(p,size);p是你原来申请的动态空间的首地址,是你要申请的动态内存的大小,而不是你要追加的动态内存空间大小,这一点要切记。malloc和calloc的区别在这里还要注意一点,就是你要追加的动态内存空间的大小大于你原来申请的动态内存空间紧挨着的内存空间时,申请的内存空间会重新查找一块足够大的动态内存区,然后将数据拷贝到你申请到的内存中,然后删除你原来申请的内存空间的数据。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-94074-1.html