C++ vector 插入动态内存(new、malloc申请的内存)及销毁动态内存 (delete 、free)demo

我们使用vector时候,有时候会插入一些动态内存数据(例如new出来的指针插入到vector中)。这时候我们一定要注意C++的内存管理,因为C++的内存管理原则,谁申请的,谁销毁。我们如果不对vector里的指针对应的动态内存进行销毁操作,直接clear()的话就会造成内存泄露。所以我们需要首先遍历vector,把vector中元素存储的指针对应动态内存销毁掉,然后再clear()掉vector。

demo示例:

#include <vector>
#include <iostream>
#include <cstring>
using namespace std;int main()
{vector<char *> obj;//vector中插入动态内存for(int i=0;i<10;i++){char * ptr = new char[100];memset(ptr, 0 , 100);obj.push_back(ptr);}//需要清理申请的动态内存,然后才能清空vector,否则会造成内存泄露for(vector<char *>::iterator it = obj.begin(); it != obj.end(); it++){if(*it != NULL){delete *it;*it = NULL;}}obj.clear();return 0;
}

番外篇:new char[100]和new char(100)的区别

写demo的时候,顺手写了new char(100)。。。后面发现不对了。。。哎。。。所以加了个番外篇,记录一下。
new char[100]和new char(100)的区别,其实这个属于分配问题,大家使用时还是要注意的,失之毫厘差以千里啊!
详情如下:

char *p = new char[200]; // new一个char数组,大小为200
char *p = new char(200); //new一个char ,其初始值为200

结束寄语

有关vector小细节的介绍就到此结束啦!下篇博文与各位再见面~

写博不易,如蒙厚爱,赏个关注,一键三连~~点赞+评论+收藏												

【❌❌vectorの奇技淫巧⭕⭕】C++ vector 如何正确处理动态申请内存的元素相关推荐

  1. C++二维数组动态申请内存

    好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到 ...

  2. C++学习之路抓紧跑路版(七)-动态申请内存空间

    文章目录 前言 一.如何申请动态内存空间? 二.练习 总结 前言 今天我们来看下在C++中如何动态申请内存空间,不多比比 一.如何申请动态内存空间? 在C++中我们用new/delete来申请和释放内 ...

  3. C语言动态申请内存空间之malloc(),calloc(),realloc()函数

    在C语言中用于动态申请内存空间的函数主要为malloc()函数,calloc()函数,以及realloc()函数,以下主要介绍三个函数的用法,区别以及使用时的注意事项. malloc(),calloc ...

  4. vector容器动态申请内存的过程_记录一次自定义Allocator profile的过程

    交代背景 最近组里小伙伴通过组播技术实现发送同一报文到多个接收者,Receiver端会申请内存接收UDP数据包并存入指定Queue中,待用户从Queue中取出数据后会将这块内存回收.上述数据发送功能主 ...

  5. C语言动态二维数组,结构体动态申请内存空间

    在C语言中,申请一般数组时,数组大小必须是常量.即使是赋了特定值的变量,也不行,比如:int n=3;int a[3];这样的做法是错误的,我们需要动态申请数组内存,如下申请一个动态整数(int)二维 ...

  6. C语言动态申请内存空间

    为什么要动态内存申请 1.定义数组的时候数组的长度是预先定义好的,在整个程序中固定不变; 2.但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定 3.为了解决 ...

  7. C语言 malloc动态申请内存,存放数组

    代码 #include<stdio.h> #include<stdlib.h> int *plusOne() {int *array = NULL;array = (int * ...

  8. 链表和动态申请内存空间

  9. C-获得文件大小并动态申请内存屏幕打印文件内容小程序

    思想: 要想将文件内容完全装入一个合理的内存空间 首先要获得文件大小,通过feek(fp,0,SEEK_END)将光标移动到文件尾部,在使用ftell获得当前光标距离文件首部的偏移量就等价于文件的大小 ...

最新文章

  1. 王道计算机考研 数据结构 (栈和队列)
  2. 神经网络与深度学习——TensorFlow2.0实战(笔记)(六)(Matplotlib绘图基础<折线图和柱状图>python)
  3. 使用Handlerf发送消息或使用Handler轮询时,报错IllegalStateException:This message is already in use.;...
  4. 【Nodejs】使用request批量下载MP3,文件数量内容都没问题
  5. 桌面应用程序软件开发语言_开发多语言软件应用程序的技巧
  6. 【操作系统概念-作业9】Virtual Memory
  7. vs 2013 必须先停止生成方可关闭解决方案
  8. 【观察】借道企业微信,销售易打开新一轮增长空间
  9. matlab实现图片锐化处理
  10. 在下图的基础上,一笔写出“田”字
  11. C++设计模式——状态模式
  12. 谷歌手机pixel4 夜景_您应该购买Google Pixel 4a的5个理由
  13. spark yarn模式提交任务不成功(application state: ACCEPTED)
  14. 从今天开始,记录工作、学习和生活点滴。
  15. Python操作Word的入门教程
  16. xendesktop更新计算机,XenDesktop7.12发布Win10周年更新版桌面
  17. XHTML基础题及答案20道——必刷前端题目(背)
  18. 打印机一体机如何扫描文件到电脑
  19. 微软拼音输入法是我所知的最糟糕的输入法
  20. 光敏电阻控制LED亮灭

热门文章

  1. MySQL数据迁移到SQL Server
  2. LARS 最小角回归算法简介
  3. javaWeb项目中获取ip为 0:0:0:0:0:0:0:1
  4. Sublime Less 自动编译成css
  5. Silverlight多文件(大文件)上传的开源项目
  6. YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.r
  7. caffe中solver.prototxt文件参数解释
  8. [云炬ThinkPython阅读笔记]3.1 函数调用
  9. 科大星云诗社动态20210317
  10. 科大星云诗社动态20211202