动态分布函数的核心是malloc()和free()。每次调用malloc()时,军分配剩余空内存的一部分;每次调用free()时,均向系统返回内存。被分配的空内存区中的内存叫做堆(heap)。动态分配函数的原型在中。
函数malloc()的原型如下:
void *malloc(size_t size);
函数返回一个指针,指向从堆中分配的内存区域(参数size的值)的首字节。当堆中的内存不能...
分类:
其他好文 时间:
2015-08-07 20:19:38
阅读次数:
227
malloc是怎样实现的呢?答案就是:可以基于伙伴系统实现(关于伙伴系统在之前的文章里面已经讲过),也可以使用基于链表的实现 。
??
它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表
调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分...
分类:
其他好文 时间:
2015-08-06 15:10:01
阅读次数:
102
1 #include"getWhitelist_demo.h" 2 3 void Initialize_List(List *l) 4 { 5 *l=(List)malloc(sizeof(Node)); 6 (*l)->Next=NULL; 7 } 8 9 void Inse...
分类:
其他好文 时间:
2015-08-06 10:59:18
阅读次数:
147
#include#include#includetypedef struct{ char name[32]; int age; char gender; float score[3];}Student;typedef struct{ Student * pData;//学生信息 int size;/...
分类:
编程语言 时间:
2015-08-05 22:01:12
阅读次数:
124
一,retain, copy, assign区别1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在...
分类:
其他好文 时间:
2015-08-05 18:05:58
阅读次数:
95
【面向对象的概念】
世间万物皆有属性和方法,将这些封装起来就是一个对象,封装,继承,多态等
【内存分配】
栈区:
存储函数的参数,局部变量,程序的返回地址等,编译器需要的时候会自动分配内存,不需要的时候会自动清除。
堆区:
由程序员分配和释放,若程序员不释放,程序结束时操作系统会释放,分配方式类似于链表,动态分配的内存都是在这里,new,malloc,需要用delete,free来释放...
分类:
编程语言 时间:
2015-08-05 16:25:03
阅读次数:
120
内存:1:堆存储区 ==> 存储手动分配的内存:malloc free 2:栈存储区 ==> 系统为临时变量分配内存的区域 3:静态变量存储区 ==> 用来存储静态变量内存 当程序启动时,先为所有的静态变量分配内存 在程序执行中,static静态变量的内存一直保留 当程...
分类:
其他好文 时间:
2015-08-05 12:44:50
阅读次数:
114
计数排序是稳定排序,而且是线性时间内的排序算法,时间复杂度是O(n + k)其中k是待排序数组的范围。计数排序不是原址排序,空间复杂度是O(n + k)
//k是指A中的数组范围是0~k 包括0和k
void count_sort(int A[], int B[], int n, int k)
{
int *C = (int *)malloc(sizeof(int) * ...
分类:
编程语言 时间:
2015-08-04 00:39:31
阅读次数:
131
两个函数:malloc和free
需要头文件:stdlib.h
void *malloc(size_t size);
void free(void *ptr);
需要说明的是:
申请:
1)。参数是申请内存的字节数。
2)。申请的是一块连续的内存。
3)。返回值是void *类型,因此,要将他的返回值付给一个指针的时候,一定要类型转换。
释放:
1)。参数是...
分类:
其他好文 时间:
2015-08-03 19:14:11
阅读次数:
98
先看一下,什么叫做内存的碎片化:1 如果用c语言直接 malloc,free 来向操作系统申请和释放内存时,2 在不断的申请和释放过程中,形成了一些很小的内存片断,无法再利用.3 这种空闲,但无法利用内存的现象,---称为内存的碎片化.因此,为了解决这个内存碎片化带来的浪费,那MC采用的是slab ...
分类:
其他好文 时间:
2015-08-02 19:46:56
阅读次数:
204