徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
自由
比浏览器更快的访问!
 

动态内存分配

指数 动态内存分配

在计算机科学中, 动态内存分配(Dynamic memory allocation)又称为堆内存分配,是指计算机程序在运行期中分配使用内存。它可以当成是一种分配有限内存资源所有权的方法。 动态分配的内存在被程序员明确释放或被垃圾回收之前一直有效。与静态内存分配的区别在于没有一个固定的生存期。这样被分配的对象称之为有一个「动态生存期」。.

14 关系: 執行期二叉树嵌入式系统元数据随机存取存储器静态变量記憶池高德纳计算机科学计算机程序链表New (C++)University of Texas at Austin指针

執行期

執行時期(Run time)在電腦科學中代表一個電腦程式從開始執行到終止執行的運作、執行的時期。與執行時期相對的其他時期包括:設计時期(design time)、編譯時期(compile time)、鏈結時期(link time)、與載入時期(load time)。 而執行環境是一種為正在執行的程序或程式提供軟體服務的虛擬機械環境。它有可能是由作業系統自行提供,或由執行此程式的母程式提供。 通常由作業系統負責處理程式的載入:利用載入器(loader)讀入程式碼,接著進行基本的記憶體配置,並視需要聯結此程式指定的所有動態链接庫。有些程式語言會由此語言提供的運行環境處理上述工作。 程式碼的某些問題,只能在執行期間進行偵錯動作(或較有效率),例如邏輯錯誤或陣列邊際檢查等便屬此類。因此不管撰寫與測試得多麼精細,有些錯誤必須在實際上線並處理真實資料的情況下才能找出。因此,程式使用者也許會遇到諸如執行時期錯誤之類的訊息。.

新!!: 动态内存分配和執行期 · 查看更多 »

二叉树

在電腦科學中,二元樹(Binary tree)是每個節點最多只有兩個分支(即不存在分支度大於2的節點)的樹結構。通常分支被稱作“左子樹”或“右子樹”。二元樹的分支具有左右次序,不能随意顛倒。 二元樹的第i層至多擁有2^個節點;深度為k的二元樹至多總共有2^\begin k+1 \end-1個節點(定义根节点所在深度 k_0.

新!!: 动态内存分配和二叉树 · 查看更多 »

嵌入式系统

嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含數位硬件和机械部件的完整设备,例如汽車的防鎖死煞車系統。相反,通用计算机如个人电脑则设计灵活,可以智能處理各式各樣的運算情況,以满足广大终端用户不同的需要。 现代嵌入式系统通常是基于微控制器(如含集成内存和/或外设接口的中央处理单元)的,但在较复杂的系统中普通微处理器(使用外部存储芯片和外设接口电路)也很常见。通用型处理器、专门进行某类计算的处理器、为手持应用订制设计的处理器等,都可能应用到嵌入式系统。常见的专用处理器有数字信号处理器。 嵌入式系统的关键特性是处理特定的任务,因此工程师能对其进行优化,以降低产品的体积和成本,提升可靠性和性能。 嵌入式系统的物理形态包括便携设备如計步器、电子手表和MP3播放器,大型固定装置如交通灯、工厂控制器,大型复杂系统如混合动力汽车、磁共振成像设备、航空电子设备等。它们的复杂度低至单片机,高至大型底盘或外壳内安装有多个部件、外设和网络。.

新!!: 动态内存分配和嵌入式系统 · 查看更多 »

元数据

元資料(Metadata),又稱元數據、詮釋資料、中介資料、中繼資料、後設資料等,為描述其他資料資訊的資料。有三種不同類型的元資料,分別是記敘性元資料、結構性元資料和管理性元資料。.

新!!: 动态内存分配和元数据 · 查看更多 »

随机存取存储器

随机存取存储器(Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以隨時读写(重新整理時除外,見下文),而且速度很快,通常作为操作系统或其他正在运行中的程式的临时資料存储媒介。 主記憶體(Main memory)即電腦內部最主要的記憶體,用來載入各式各樣的程式與資料以供CPU直接執行與運用。由於DRAM的性價比很高,且擴展性也不錯,是現今一般電腦主記憶體的最主要部分。2014年生產電腦所用的主記憶體主要是DDR3 SDRAM,而2016年開始DDR4 SDRAM逐漸普及化,筆電廠商如華碩及宏碁開始在筆電以DDR4記憶體取代DDR3L。.

新!!: 动态内存分配和随机存取存储器 · 查看更多 »

静态变量

静态变量(Static Variable)在计算机编程领域指在程序执行前系统就为之(也即在运行时中不再改变分配情况)存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。.

新!!: 动态内存分配和静态变量 · 查看更多 »

記憶池

記憶池 (Memory Pool),又被稱為固定大小區塊規劃 (fixed-size-blocks allocation),允許程式設計師以類似 C語言 的 malloc 或是 C++ 的 new 運算元進行動態的記憶體規劃。對於其它動態記憶體規劃的實踐來說,因為會變動記憶體區塊大小導致的碎片問題,導致在實時系統上受限於效能因此,根本無法使用。記憶池提供了一個更有效率的解決方案:預先規劃一定數量的記憶體區塊,使得整個程式可以在執行期規劃 (allocate)、使用 (access)、歸還 (free) 記憶體區塊。 有許多實時作業系統採用了記憶池,IBM 的 Transaction Processing Facility 便是其中一個例子。.

新!!: 动态内存分配和記憶池 · 查看更多 »

高德纳

德納(Donald Ervin Knuth,音譯:唐納德·爾文·克努斯,),出生於美国密尔沃基,著名计算机科学家,斯坦福大学计算机系榮譽退休教授。高德纳教授為现代计算机科学的先驅人物,創造了演算法分析的領域,在數個理論計算機科學的分支做出基石一般的貢獻。在计算机科学及数学领域发表了多部具广泛影响的论文和著作。1974年圖靈獎得主。 高德纳最為人知的事蹟是,他是《计算机程序设计艺术》的作者。此書是計算機科學界最受高度敬重的參考書籍之一。此外還是排版軟件tex和字型設計系統Metafont的发明人。提出文学编程的概念,並創造了WEB與CWEB軟體,作為文學編程開發工具。.

新!!: 动态内存分配和高德纳 · 查看更多 »

计算机科学

计算机科学用于解决信息与计算的理论基础,以及实现和应用它们的实用技术。 计算机科学(computer science,有时缩写为CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何与应用的实用技术的学科。 它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;有些强调特定结果的计算,比如计算机图形学;而有些是探討计算问题的性质,比如计算复杂性理论;还有一些领域專注于怎样实现计算,比如程式語言理論是研究描述计算的方法,而程式设计是应用特定的程式語言解决特定的计算问题,人机交互则是專注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。 有时公众会误以为计算机科学就是解决计算机问题的事业(比如信息技术),或者只是与使用计算机的经验有关,如玩游戏、上网或者文字处理。其实计算机科学所关注的,不仅仅是去理解实现类似游戏、浏览器这些软件的程序的性质,更要通过现有的知识创造新的程序或者改进已有的程序。 尽管计算机科学(computer science)的名字里包含计算机这几个字,但实际上计算机科学相当数量的领域都不涉及计算机本身的研究。因此,一些新的名字被提议出来。某些重点大学的院系倾向于术语计算科学(computing science),以精确强调两者之间的不同。丹麦科学家Peter Naur建议使用术语"datalogy",以反映这一事实,即科学学科是围绕着数据和数据处理,而不一定要涉及计算机。第一个使用这个术语的科学机构是哥本哈根大学Datalogy学院,该学院成立于1969年,Peter Naur便是第一任教授。这个术语主要被用于北欧国家。同时,在计算技术发展初期,《ACM通讯》建议了一些针对计算领域从业人员的术语:turingineer,turologist,flow-charts-man,applied meta-mathematician及applied epistemologist。 三个月后在同样的期刊上,comptologist被提出,第二年又变成了hypologist。 术语computics也曾经被提议过。在欧洲大陆,起源于信息(information)和数学或者自动(automatic)的名字比起源于计算机或者计算(computation)更常见,如informatique(法语),Informatik(德语),informatika(斯拉夫语族)。 著名计算机科学家Edsger Dijkstra曾经指出:“计算机科学并不只是关于计算机,就像天文学并不只是关于望远镜一样。”("Computer science is no more about computers than astronomy is about telescopes.")设计、部署计算机和计算机系统通常被认为是非计算机科学学科的领域。例如,研究计算机硬件被看作是计算机工程的一部分,而对于商业计算机系统的研究和部署被称为信息技术或者信息系统。然而,现如今也越来越多地融合了各类计算机相关学科的思想。计算机科学研究也经常与其它学科交叉,比如心理学,认知科学,语言学,数学,物理学,统计学和经济学。 计算机科学被认为比其它科学学科与数学的联系更加密切,一些观察者说计算就是一门数学科学。 早期计算机科学受数学研究成果的影响很大,如Kurt Gödel和Alan Turing,这两个领域在某些学科,例如数理逻辑、范畴论、域理论和代数,也不断有有益的思想交流。.

新!!: 动态内存分配和计算机科学 · 查看更多 »

计算机程序

计算机程序(Computer Program)是指一组指示计算机或其他具有訊息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体--结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语(編譯器)同時也會烹饪手法的人(体--结构)来做这道菜。 通常,以英文文本為基礎的计算机程序要经过編譯和連結而成为一种人们不易看清而计算机可解讀的一連串數字的格式,然后放入运行。未经编译就可运行的程序,通常称之为脚本程序(script)。.

新!!: 动态内存分配和计算机程序 · 查看更多 »

链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。 链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C/C++和Java依靠易变工具来生成链表。.

新!!: 动态内存分配和链表 · 查看更多 »

New (C++)

new是C++程序设计语言中的一种语言结构,用于动态分配内存、并用构造函数初始化分配的内存。 new的使用称为“new运算符表达式”,其内部实现分为两步:.

新!!: 动态内存分配和New (C++) · 查看更多 »

University of Texas at Austin

#重定向 德克薩斯州大學奧斯汀分校.

新!!: 动态内存分配和University of Texas at Austin · 查看更多 »

指针

指针可以指:.

新!!: 动态内存分配和指针 · 查看更多 »

重定向到这里:

動態記憶體分配

传出传入
嘿!我们在Facebook上吧! »