C++ 中动态内存管理通过一对运算符来完成: ,在动态内存中为对象分配空间并返回一个指向该对象的指针。 ,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。 新标准提供两种智能指针类型来管理动态对象,智能指针的行为类似常规指针,重要的区别是智能指针负责自动释放所指向的对象,新标准提供的这两种 ...
分类:
其他好文 时间:
2020-03-15 13:23:16
阅读次数:
54
C动态内存分配:malloc / realloc / calloc 1)void *malloc( size_t size ); malloc的参数是用户所需内存空间大小的字节数,不会对申请成功的内存初始化。 malloc 申请空间时并不是需要多少就申请多少,而是会多申请一些空间: a.多申请一个3 ...
分类:
编程语言 时间:
2020-03-15 09:25:51
阅读次数:
69
stack: 栈,存放局部变量,有系统释放 heap: 堆, 存放动态分配的内存,有程序员自己手动释放。比如: int * p = (int * )malloc(4); free(p) 释放的是动态内存,p是局部变量,所以并未释放。 globle, 全局变量, 存放全局变量以及静态变量。有系统自动释 ...
分类:
其他好文 时间:
2020-03-03 00:56:33
阅读次数:
65
void指针 void用在函数定义中可以表示函数没有返回值或者没有形参,用在这里表示指针指向的数据的类型是未知的。 表示一个有效指针,它确实指向实实在在的数据,只是数据的类型尚未确定,在后续使用过程中一般要进行强制类型转换。 malloc()函数:动态分配内存空间 原型: 作用:malloc()在堆 ...
分类:
其他好文 时间:
2020-03-02 14:32:16
阅读次数:
69
malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。 函数定义 其函数原型为void ...
分类:
编程语言 时间:
2020-02-25 17:52:14
阅读次数:
83
1,C程序中,不同数据在内存中分配说明 ①全局变量 内存中的静态存储区 ②非静态的局部变量 内存中的动态存储区 stack 栈 ③临时使用的数据 建立动态内存分配区域,需要时随时开辟,不需要时及时释放 heap 堆 ④根据需要向系统申请所需大小的空间,由于未在声明部分定义其为变量或者数组,不能通过变 ...
分类:
其他好文 时间:
2020-02-25 17:28:18
阅读次数:
80
动态内存分配 new运算符 new 运算符是实现动态内存分配的一种方式。 第一种用法 分配给一个变量动态内存空间 格式 其中T是任意类型名,P是类型为T 的指针 含义:动态分配出一片大小为 字节的内存空间,并且将该内存空间的起始地址赋值给P。 例: 第二种用法 分配给一个数组动态内存空间 格式 其中 ...
分类:
编程语言 时间:
2020-01-30 22:34:35
阅读次数:
67
C++ 11提供的智能指针有:shared_ptr、unique_ptr、weak_ptr。在 头文件 memory 中。 一、new delete 直接管理内存 1、初始化 string * ps = new string // 初始换为一个空string int * pi = new int ; ...
分类:
编程语言 时间:
2020-01-28 10:49:44
阅读次数:
99
动态内存管理 (1) malloc()、calloc()分配新的内存区域。calloc 在动态分配完内存后,自动初始化该内存空间为零,而 malloc 不初始化,里边数据是随机的垃圾数据。(2) realloc()调整已分配的内存区域。先判断当前的指针是否有足够的连续空间,如果有,扩大mem_add ...
分类:
编程语言 时间:
2020-01-17 21:05:10
阅读次数:
69
堆 堆则是一种经过排序的树形数据结构,常用来实现优先队列,他的特点在于形成某种优先的结构。在计算机经常用到,比如优先队列,或者是优先进程管理。 堆(也叫二叉堆)的性质: 1、任何一个节点,都不大于他的父亲节点。 2、必须是一颗完全二叉树 栈 在数据结构中,栈是一种可以实现“先进后出”(或者称为“后进 ...
分类:
编程语言 时间:
2020-01-17 17:28:36
阅读次数:
97