• C动态内存分配是在C语言中为了实现动态内存分配而进行的手动内存管理。这种管理是通过C標準函式庫中的malloc、realloc、calloc、free 等函数进行的。 C++ 为了兼容 C 语言也提供这些函数,但是更推荐使用 new、delete 操作符来完成类似的操作。 malloc...
    3 KB (256 words) - 17:35, 13 December 2022
  • 在计算机科学中, 动态内存分配(Dynamic memory allocation)又称为堆内存分配,是指计算机程序在运行期中分配使用主存储器。它可以当成是一种分配有限内存资源所有权的方法。 动态分配内存在被程序员明确释放或被垃圾回收之前一直有效。与静态内存分配的区别在于没有一个固定的生存期。这样被分配的对象称之为有一个「动态生存期」。...
    6 KB (661 words) - 04:55, 25 February 2025
  • 内存泄漏(英語:memory leak)是计算机科学中的一種资源泄漏,主因是計算機程序的記憶體管理失當,因而失去对一段已分配内存空間的控制,程序继续占用已不再使用的内存空間,或是記憶體所儲存之物件無法透過執行程式碼而存取,令内存资源空耗。 記憶體漏失与許多其他問題情形具有相同征兆,通常只有获得程序源...
    14 KB (1,991 words) - 13:29, 21 March 2025
  • 如果程序需要在运行的过程中动态分配内存,可以利用堆(Heap)来实现。 基本上C程序的元素存储在内存的时候有3种分配策略: 静态分配 如果一个变量声明为全局变量或者是函数的静态变量,这个变量的存储将使用静态分配方式。静态分配内存一般会被编译器放在数据段或代码段来存储,具体取决...
    23 KB (2,810 words) - 10:02, 13 March 2025
  • Stdlib.h (category C标准库头文件)
    h是C标准函数库的一個头文件,声明了数值与字符串转换函数、伪随机数生成函数、动态内存分配函数、进程控制函数等公共函数。 C++程序应调用等价的cstdlib头文件. stdlib.h中定义的常量: stdlib.h中定义的数据类型: stdlib.h中声明的库函数可分为六类:类型转换、伪随机数、动态...
    7 KB (86 words) - 05:54, 7 June 2024
  • 许多类Unix系统以及Microsoft Windows都实现了一个名为alloca的函数,用于动态分配堆栈内存。该函数早在UNIX/32V(英语:UNIX/32V)(1978) 時就出现在Unix系统上,但不是ANSI C或任何可移植操作系统接口标准的一部分。 alloca(3) – Linux程序员手册页...
    1 KB (197 words) - 10:08, 21 February 2022
  • 类型 为结构定义变量时通常会用到动态内存分配: #define mktree() (bintree *)malloc(sizeof(bintree)) // 分配该结构所需的内存单元数量 bintree *tree; tree = mktree(); // 分配到 tree 指针 tree->data...
    8 KB (710 words) - 14:15, 11 February 2025
  • C++编程中,分配器(英語:allocator)是C++标准库的重要组成部分。C++的库中定义了多种被统称为“容器”的数据结构(如链表、集合等),这些容器的共同特征之一,就是其大小可以在程序的运行时改变;为了实现这一点,进行动态内存分配就显得尤为必要,在此分配器就用于处理容器对内存分配...
    24 KB (2,985 words) - 12:03, 1 March 2025
  • 動態分配記憶體功能是C語言的一大特色,可以在運行期依實際需求用malloc分配記憶體,在不使用此記憶體時再用free歸還,但許多問題也和未正確處理動態分配記憶體功能有關,例如MISRA-C:2004的規則20.4為「不能使用动态堆的内存分配」,限制malloc、free等程序的使用。 C語言 程式碼...
    8 KB (757 words) - 05:31, 31 May 2024
  • 动态数组克服了静态数组的限制,静态数组有着需要在内存分配时指定的固定容量。 动态数组与动态分配的数组或可变长数组不是一种东西,可变长数组的大小是在分配这个数组的时候固定的,然而动态数组也可以使用这种固定大小的数组作为后端。 C++的std::vector(英语:Sequence...
    5 KB (483 words) - 04:29, 18 March 2025
  • 在计算机科学中,不可访问内存是指一组没有任何可访问指针指向的由计算机程序进行动态分配内存块。类似的,一个不可访问对象是指没有可访问引用型指向的动态分配对象。通俗来说,不可访问内存是程序无法直接访问的动态内存,同时也无法通过指针指向一个可访问的起始对象来进行访问。 动态内存分配...
    2 KB (324 words) - 21:37, 13 March 2021
  • new是C++程序设计语言中的一种语言结构,用于动态分配内存、并用构造函数初始化分配内存。 new的使用称为“new运算符表达式”,其内部实现分为两步: 调用相应的operator new()函数,动态分配内存。如果operator new()不能成功获得内存...
    13 KB (1,962 words) - 18:05, 13 December 2023
  • 线程间同步服务,具有二值信号量、计数信号量、互斥信号量。 线程间数据传递服务,具有基本消息队列、增强消息队列和字节流。 内存分配服务,具有固定大小或可变大小内存块的动态分配和释放。 电能管理服务,具有比如无时标空闲和高级的空闲下部构造。 允许应用只合并入它需要的功能,并指定它们的数量和大小。...
    9 KB (764 words) - 02:10, 22 April 2025
  • OpenMP (category C語言家族)
    OpenMP(Open Multi-Processing)是一套支持跨平台共享内存方式的多线程并发的编程API,使用C,C++和Fortran语言,可以在大多数的处理器体系和操作系统中运行,包括Solaris, AIX, HP-UX, GNU/Linux, Mac OS X, 和Microsoft...
    15 KB (2,561 words) - 16:52, 15 January 2025
  • Zswap (category 虚拟内存)
    zswap是一项Linux内核的虚拟内存压缩功能,可为将要交换的页面提供压缩回写缓存。当内存页将要交换出去时,zswap不将其移动到交换设备,而是对其执行压缩,然后存储到系统RAM内动态分配内存池中。回写到实际交换设备的动作则会延迟,甚至能完全避免,从而显著减少Linux系统用于交换的I/O;副作用则是压缩所需的额外CPU周期。...
    15 KB (1,411 words) - 05:22, 4 June 2024
  • 之外如PHP、Ruby、Python等也都属于动态语言,而CC++、Java等语言则不属于动态语言。 大部分动态语言都使用动态类型,但也有些不是。 动态语言可能包含的特征有:eval函数、对象运行时间改变、类型推论、可变内存分配、反射和宏。 一些动态语言提供eval函数。这个函数接受包含这个语言...
    14 KB (1,698 words) - 10:24, 27 December 2024
  • 时运行环境会自动地回收对象。在不具有垃圾回收机制的语言当中,如C语言,程序必须显式地分配内存,而且使用结束后还要释放内存,如果不这样做则会造成内存泄漏。在这种情况下,程序运行过程中堆会逐渐消耗,最终因为内存耗尽而崩溃。 当一个变量指向动态创建的数据结构时,可能其中一些部分只能通过变量间接地访问。在这...
    12 KB (2,130 words) - 20:58, 15 April 2025
  • scoped_ptr - 具作用域指针,与std::auto_ptr类似,但不能转让所有权,用于确保离开作用域能夠正确地删除动态分配的对象 scoped_array - 配合scoped_ptr使用 shared_ptr - shared_array - 配合shared_ptr使用...
    16 KB (1,574 words) - 07:26, 13 March 2025
  • 解引用(dereference)运算(*p)返回保存在内存地址为p的内存空间中的值。取地址(&p)运算则返回操作数p的内存地址。显然可以用赋值语句对内存地址赋值。 假设一段内存地址空间解引用如下:(十六进制) 然后,执行代码“int *p;”,假设初始化时p被分配3001H、3002H两个地址。则p为2003H,*p为3000H。...
    16 KB (2,213 words) - 23:22, 15 January 2025
  • 在C代码中,由于容易错误地使用指针,储存器段错误最常发生。尤其是在C动态内存分配中。 试图访问空指针所指向的内存区域总是会导致储存器段错误。而野指针和悬空指针则有时会导致储存器段错误,有时则不会。这是因为野指针和悬空指针所指向的内存可能存在也可能不存在,可能可写入也可能不可写入。这会导致储存器段错误会出现在意料不到的时候。...
    14 KB (2,140 words) - 15:49, 28 September 2022
  • Variable)在计算机编程领域指在程序执行前系统就为之静态分配(英语:Static memory allocation)(也即在运行时中不再改变分配情况)存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。 “静态变量”这一术语有两个容易混淆的定义:...
    7 KB (1,141 words) - 11:05, 19 September 2024
  • Cache,在本文中简称缓存)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。 当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),则要先把内存中的相应数据载入缓存,再将其返回处理器。...
    40 KB (7,121 words) - 02:37, 26 March 2024
  • memory 是C++標準程式庫中的一個头文件,定义了C++标准中的智能指针、内存分配器(allocator)、与垃圾回收有关的函数、临时性的申请与释放动态内存的函数、在内存上创建(构造)对象的函数等等。 operator!= 测试allocator、智能指针是否不等 operator==测试allocator、智能指针是否相等...
    24 KB (3,636 words) - 06:25, 24 March 2021
  • Cocoa (section 内存管理)
    Cocoa环境的一个特点是它可以管理动态分配内存。Cocoa中绝大部分类的基类都是NSObject,它实现了引用计数的内存管理模型。从NSObject继承的类可以响应retain和release消息,以增减其引用计数;也可以通过发送retainCount消息来获取其引用计数。一个以alloc,copy或Objective-C 2...
    16 KB (2,244 words) - 23:28, 12 November 2021
  • 在进行动态内存分配和变量访问时,编译器需要完成许多工作,其中扩展的栈模型就需要用到符号表。 下图是一个小程序的符号表。该表是用GNU Binutils中的nm工具生成的。其中有一个数据类型符号(由类型 "D" 表明)和许多函数(自己定义的以及标准库中的)。第一列是每个符号在内存中的位置,第二列是"符号类型...
    4 KB (336 words) - 01:58, 25 March 2022
  • Zig (category C (编程语言) 编译器)
    指针,但C没有一套系统来确保在程序不再需要内存时释放该内存,这可能导致内存泄漏以至于耗费完所有的可用内存。更常见的是悬空指针,这些指针引用未正确分配内存地址。 解决这些问题的常见方法是垃圾回收(GC),它会检查程序中指向先前分配内存的指针,并删除所有的不再有指针指向它们的内存...
    36 KB (4,090 words) - 15:19, 30 April 2025
  • 内存消耗的数据结构,实现了关联数组的功能。与普通数组不同,Judy array可以是稀疏的,这一点更像是散列表,而非数组。Judy array可以用整形或字符串作为键值来存储、查询数据,它最大的优势是可动态自动扩展,高性能,节省内存并且易于使用。 由于Judy array在操作速度和内存...
    4 KB (661 words) - 12:36, 20 January 2022
  • 提供信号量,也提供互斥信号量以防止优先级反转; 支持其他高效通信方式,比如邮箱、消息队列和事件标志; 支持静态内存分配方法,也支持线程安全的动态内存管理; 对高层应用提供设备框架。 类C的命令解析方式; 可通过命令行直接调用系统核心函数或全局变量; 具备历史命令查找功能。 为小型设备优化的类POSIX...
    7 KB (670 words) - 13:50, 21 September 2024
  • alue(index)获取线程局部存储值。 Windows可执行程序也可以定义一个节(section),映射到进程每个线程的不同的内存分页。这种节只定义在主程序里,动态链接库(DLL)不应该包含这种节因为不会被LoadLibrary函数在加载时初始化。 对于Windows系统来说,全局变量或静态变量会被放到"...
    15 KB (1,394 words) - 14:45, 18 February 2024
  • 内存地址。这意味着左值可以是变量,也可以是对指向特定内存地址的指针解引用(dereference)的结果。例如C语言的表达式(4 + 9),在执行时,计算机生成一个整数值13,但因为程序没有明确指定这个13如何在计算机中存储,所以这个表达式产生一个右值。另一方面,如果一个C...
    9 KB (1,680 words) - 10:21, 24 October 2022
  • Euphoria 根据当前值在整数和浮点表示之间动态变化。 Sequence – 具有零个或多个元素的数组,每个元素可能是一个Atom或另一个Sequence。Sequence中元素的数量不是固定的(即不必声明数组的大小)。程序可以在运行时根据需要添加或删除元素。内存分配...
    18 KB (1,787 words) - 15:33, 19 January 2023