请教一下关于数据结构C++,关于堆的问题?

数据结构C++,关于堆的问题


慕盖茨4494581
浏览 447回答 3
3回答

慕尼黑8549860

class hEntry{    piblic :        int priority;        String data;};  class Heap{    public:        void deletMin();         private:        hEntry* hArray;        int numEntries;}      

跃然一笑

我们说的堆(heap) 是程序员申请的内存空间,在C/C++中,你可以理解为:所有非常量的指针空间。和heap对应的,还有栈(stack)、静态区(static)、常量区(const),以及程序代码区。这些都是程序运行所需要申请的内存空间。heap堆和其它内存区的主要差别,一个是heap是由程序员申请、释放和管理的(而不是由系统和程序自动分配和释放),是动态的;另外一个就是,其它区域都是有固定大小的,而heap的大小,仅仅受到内存和虚拟内存大小的限制,也就是说,理论上你可以申请的堆空间是无限大的。例子:main() {const char* m = "123";//"123" 常量区,m在栈(指针的本身都在栈,下同)char s[] = "abc"; //常量区char *p3 = "123456"; //常量区static int c =0; //全局(静态)初始化区 char *p1,*p2;p1 = (char *)malloc(10); //分配得来得10字节的区域就在堆区。 p2 = new char[20]; //分配得来得20字节的区域就在堆区。C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
打开App,查看更多内容
随时随地看视频慕课网APP