单链表: 链表是动态分配内存在内存中不连续,单链表只有一个向下的指针,指向下一个节点,单链表的定位时间复杂度是O(n),插入删除的时间复杂度是O(1) 双链表: 链表是动态分配内容在内存中不连续,单双链表一致,双链表有两个指针prov,next ,prov指向上一个节点,next指向下一个节点,理论 ...
分类:
编程语言 时间:
2018-10-10 23:51:54
阅读次数:
217
动态分配内存 relloc 关于 malloc 就不多说了,现在看看 realloc: 函数声明: void *realloc(void *ptr, size_t size); 功能:动态改变指针指向的内存块的大小。 使用:如果 ptr 指针是空指针,该函数的作用同 malloc; 如果 size ...
分类:
其他好文 时间:
2018-09-18 22:43:15
阅读次数:
137
数组静态分配内存,链表动态分配内存; 数组在内存中连续,链表不连续; 数组元素在栈区,链表元素在堆区; 数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。 ...
分类:
编程语言 时间:
2018-09-05 17:37:38
阅读次数:
169
4.5.1 堆管理的相关库函数 在ISO C中规定了三个动态分配内存的函数,分别是: void *malloc(size_t size); void *calloc(size_t nmemb, size_t size); void *realloc(void *ptr, size_t size); ...
分类:
其他好文 时间:
2018-08-15 13:32:33
阅读次数:
263
这里先说两个概念:1、堆(heap)2、栈(stack)堆 是堆内存的简称。栈 是栈内存的简称。说到堆栈,我们讲的就是内存的使用和分配了,没有寄存器的事,也没有硬盘的事。各种语言在处理堆栈的原理上都大同小异。堆是动态分配内存,内存大小不一,也不会自动释放。栈是自动分配相对固定大小的内存空间,并由系统 ...
分类:
编程语言 时间:
2018-08-02 13:52:02
阅读次数:
157
C++ 动态内存了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存。堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定 ...
分类:
编程语言 时间:
2018-08-01 15:21:14
阅读次数:
142
Java与C++相比,具有动态分配内存和垃圾回收机制的技术优势,使得我们不用把精力集中在内存的管理上,那我们为什么还要去了解GC和内存分配呢?原因很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 1.为什 ...
分类:
编程语言 时间:
2018-07-03 20:46:49
阅读次数:
158
动态内存分配主要的函数有: malloc(), realloc(), calloc() 都包含在头文件 #include <stdlib.h> 里 这几个函数的定义: void *__cdecl malloc(size_t _Size); // 返回的是内存的首地址 void *__cdecl re ...
分类:
其他好文 时间:
2018-06-23 15:38:10
阅读次数:
183
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指 即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容。 另外,扩容 ...
分类:
编程语言 时间:
2018-06-21 13:45:04
阅读次数:
189
一、Java的堆内存和栈内存 Java把内存划分成两种:一种是堆内存,一种是栈内存。 堆:主要用于存储实例化的对象,数组。由JVM动态分配内存空间。一个JVM只有一个堆内存,线程是可以共享数据的。 栈:主要用于存储局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的。 ...
分类:
编程语言 时间:
2018-05-21 19:29:44
阅读次数:
209