摘要:
内存分配方式主要有三种:1)从静态存储区域分配;内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,例如全局变量、static变量;2)在栈上创建;执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限;3)从堆上分配,即动态内存分配。使用malloc或new申请,free或delete释放。常见内存错误及其对策:1)内存分配未成功,但使用了它。常用的解决办法是:在使用内存之前检查指针是否为NULL。如果指针p是函数的参数,那么在函数入口处用assert(p!=NULL 阅读全文
摘要:
树结构的基本思想是分割。普通二叉搜索树是按对象来进行划分,效果往往和数据结构内对象有关;而线段树是根据关键码的可能范围来分的,这种技术叫做关键空间分解!线段树的处理对象是线段(一般意义上的区间可以抽象成线段),它把线段组织成利于检索和统计的形式,本质上是线段的二叉搜索树!当然,线段树特殊点在与其中的线段可以分解和合并,另外,线段树操作的是整个区间,它的渐进时间效率不依赖于数据结构中的对象。线段树是一颗二叉搜索树,最终将一个区间[1, n]划分为一些[i, i+1]的单元区间,每个单元区间对应线段树中的一个叶子节点;每个节点用用变量count来记录覆盖该节点的线段条数。那么线段树的处理对象是什么 阅读全文