#include <stdio.h>
#include <malloc.h>
#include <iostream>
using namespace std;
int main()
{//第一种  int* p1 = new int; //动态的在堆上分配一块内存(手动分配)  cin >> *p1;cout << *p1 << endl;cout << p1 << endl;delete p1;  //释放内存  //第二种用法  int* p2 = new int[3]; //分配3块int类型大小的内存空间  int  i = 0;while (i < 3){cin >> p2[i];cout << p2[i] << endl;i++;}delete[] p2; //注意这个释放方式  //第三中用法  int* p3 = new int(45); //分配一块内存,并将45存放到这块内存中  printf("%d/n", *p3);delete p3;return 0;
}

1.new的作用是从自由存储为 类 的对象或对象数组分配内存,并将已适当分类的非零指针返回到对象。
比如:char * pchar= new char[10];
delete pchar;
例子中动态分配了10个char类型的内存给了pchar,来构成一个数组。需要注意的是,分配数组采用[] ,如果只是单个的只要new char就可以了。
2.注意事项:
(1)使用 delete 运算符可解除分配使用 new 运算符分配的内存。而且new和delete是成对出现的。只出现一个是错误的或不规范的写法,即使能编译通过,也会有安全隐患,可能会造成内存泄露;
(2)使用的new与delete要相同。也就是说如果你在 new表达式中使用了 [],你必须在对应的 delete 表达式中使用 []。如果你在 new 表达式中没有使用 [],你也不必在对应的 delete 表达式中使用 []。
(3)使用 new 为 C++ 类对象分配内存时,将在分配内存后调用对象的构造函数。所以如果是自己写的类的话,最好自己写个构造函数,这样会比较好。

https://zhidao.baidu.com/question/1574224420983531660.html

原理:分开分配内存
int** ptr = new int* [10 * 10]; /这句是指分配了100个int指针,并不是一1010的2维数组。*/
//给一个2维数组分配空间
int **ptr = new int *[10]; //指针的数组
for(int i=0;i<10;i++)
{
ptr[i]=new int[10]; /再分别给每个指针的头指针分配内存/
}
https://blog.csdn.net/a_doctor/article/details/105824349

验证二级指针

#include <stdio.h>
#include <malloc.h>
#include <iostream>
using namespace std;
int main()
{int** ptr = new int* [3]; //指针的数组for (int i = 0; i < 3; i++){ptr[i] = new int[2]; // 再分别给每个指针的头指针分配内存 /for (int j = 0; j < 2; j++){cin >> ptr[i][j];}}for (int i = 0; i < 3; i++){for (int j = 0; j < 2; j++){cout << ptr[i][j];}cout << endl;}cout << **ptr << endl;cout << *ptr[0] << endl;cout << *ptr[1] << endl;cout << *ptr[2] << endl;cout << *ptr << endl;cout << ptr[0] << endl;cout << *(*(ptr+1)+1) << endl;return 0;
}

C++:new分配内存相关推荐

  1. 1-1 分配内存资源给容器和POD

    这一小节讲解如何分配内存请求和对一个容器做内存限制.一个容器被保证拥有足够的内存可以处理请求,但是也不允许使用超过限制的内存. 开始之前 需要拥有一个k8s集群 需要安装好一个kubectl 工具,并 ...

  2. 只能在堆或只能在栈上分配内存的类

    只能在堆上分配内存的类 方法:将析构函数设置为私有 原因:C++ 是静态绑定语言,编译器管理栈上对象的生命周期,编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性.若析构函数不可访问,则不能在 ...

  3. ubuntu mysql 内存满了_ubuntu – 如何为mySQL分配内存限制?

    你可以配置 >所有MyISAM >所有InnoDB > MyISAM和InnoDB的混合物 在为任一引擎分配内存之前,最好反思每个存储引擎的缓存 配置MYISAM 使用的主要机制是密 ...

  4. Delphi 的内存操作函数(2): 给数组指针分配内存

    静态数组, 在声明时就分配好内存了, 譬如: vararr1: array[0..255] of Char;arr2: array[0..255] of Integer; beginShowMessa ...

  5. linux异常 - 无法分配内存

    linux异常 - 无法分配内存 参考文章: (1)linux异常 - 无法分配内存 (2)https://www.cnblogs.com/7q4w1e/p/9626174.html 备忘一下.

  6. C++中给二维指针分配内存

          我们都知道在 C++ 中分配动态数组用的是 new , 撤销动态数组用的是 delete[ ] ,现在让我们来看看怎么利用这两个关键字给二维指针分配内存.       原理就不写在这里了, ...

  7. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  8. linux为系统分配内存,Linux操作系统知识讲解:走进Linux 内存分配算法

    Linux 内存分配算法 内存管理算法--对讨厌自己管理内存的人来说是天赐的礼物 1.内存碎片 1) 基本原理 产生原因:内存分配较小,并且分配的这些小的内存生存周期又较长,反复申请后将产生内存碎片的 ...

  9. 如何给docker容器分配内存和cpu

    如何给docker容器分配内存和cpu?默认情况下,容器使用的资源是不受限制的.也就是可以使用主机内核调度器所允许的最大资源.但是在容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,下面我们 ...

  10. 未分配内存的指针导致段错误

    一个最简单的队列初始化操作案例: 编译可以通过:但是运行程序时,会出现段错误:Segmentation fault 分析:主函数中声明了队列的一个指针(只是声明,并未实际分配地址空间),调用初始化函数 ...

最新文章

  1. 2021-07-12 深度学习服务器网络测试(顶会ECCV网络测试)
  2. 微信小程序实战篇-分类页面制作
  3. CocoaPods did not set the base configuration of your project 问题解决方案
  4. VMware vCenter Server Appliance Photon OS安全修补程序
  5. 有一天我突然接到他的电话
  6. 电子健康行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
  8. 如何用BabeLua运行Lua代码
  9. 人行横道——步行管理(交通运行管理)
  10. VUE之倒计时插件(超实用)
  11. vss服务器状态失败_Exchange快照错误,询问写入器状态失败
  12. 100行代码,10分钟,详解Vue2.x响应式原理——理解Observer,Dep,Watcher
  13. 2022年四川省职业院校技能大赛(中职组)网络安全赛项规程
  14. Spring中的用到的设计模式
  15. 对图像作LUT处理是什么意思
  16. python在国内外研究现状_机器人教育_国内外Python课程现状?
  17. 数据结构(逻辑结构和存储结构)
  18. 软件测评概要总结-中科软测认证中心
  19. 数字孪生系统有哪些意义?
  20. Linux学习笔记_5_文件目录类指令日期,时间

热门文章

  1. 自适应移动设备页面的设计
  2. SpringBoot2.0 整合 Redis集群 ,实现消息队列场景
  3. Deep Learning 【Nature review】
  4. Spring依赖注入方式
  5. 文件I/O实践(3) --文件共享与fcntl
  6. hadoop--Map Join
  7. Spring Boot 学习(一) 快速搭建SpringBoot 项目
  8. C#重写ToString
  9. 移动开发学习记录点滴-动态增加列表行数据
  10. NUMA与英特尔下一代Xeon处理器学习心得(4)