随笔分类 - C++ Memory
摘要:调试过debug版本的vc程序的人一定对0xCCCCCCCC和0xCDCDCDCD这样的内存很有印象。这是debug版本的CRT为了方便调试程序,在分配出来还没有初始化的时候提供的初始值。 实际上,Windows上面还有更多这样的初始值,见下表: Uninitialized BAADF00D Use
阅读全文
摘要:转自:http://www.51testing.com/html/70/n-827070.html 在C++语言中,我们经常会使用new给一个对象分配内存空间,而当内存不够会出现内存不足的情况。C++提供了两中报告方式: 1、抛出bad_alloc异常来报告分配失败; 2、返回空指针,而不会抛出异常
阅读全文
摘要:Memory elements This header defines general utilities to manage dynamic memory: Allocators Managed pointers Functions and classes related to shared_pt
阅读全文
摘要:阅读目录 前言 new与malloc的10点区别 1. 申请的内存所在位置 2.返回类型安全性 3.内存分配失败时的返回值 4.是否需要指定内存大小 5.是否调用构造函数/析构函数 6.对数组的处理 7.new与malloc是否可以相互调用 8.是否可以被重载 9. 能够直观地重新分配内存 10.
阅读全文
摘要:内存工作设置(工作集)、提交大小概念简述 前言 Windows7的任务管理器(以中文版为例)里面"进程"Tab页的列里面跟内存相关的展示项有7项(分页池和非页面缓冲池跟内核内存有关,暂不讨论),做软件工程师多年,大家真的懂任务管理器中这些内存相关的列吗?譬如什么工作集,专用工作集等等,另外像其它的一
阅读全文
摘要:uftrace 用于跟踪和分析 C/C++ 编写的程序的执行情况,它受到 Linux 内核的 ftrace 框架的启发(特别是 function graph tracer),支持 userspace 程序。 uftrace 还支持各种类型的命令和过滤器,以帮助分析程序执行和性能。 功能特性 跟踪可执
阅读全文
摘要:C/C++ 知识点 sizeof使用规则及陷阱分析 原文出处:【胖奇的专栏】 1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a v
阅读全文
摘要:在项目中对程序性能优化时,发现用SetProcessWorkingSetSize() 方法使内存降低了很多,于是查阅了相关的资料如下: 我的程序为什么能够将占用的内存移至虚拟内存呢? 其实,你也可以,试试看把一个程序最小化到任务栏,再看看任务管理器。看到没,你的程序占用的实际内存一下子减少了,看来并
阅读全文
摘要:1、获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusEx。GlobalMemoryStatus函数可以在C语言里直接调用,但是GlobalMemoryStatusEx却不可以直接调用。 2、看看这2个函数的不同,总的来说这2个函数都可以获
阅读全文
摘要:实验环境: Win7X64Sp1 + vs2008, 物理内存16GB. 实验结论: * 进程堆的最大Size并没有使用完剩余的物理内存 * 每次能分配的最大堆空间接近2M, 不管是私有堆,还是进程堆, 和堆初始Size无关, * 将堆空间用尽后, 累计堆空间总Size接近2000MB, 不管是私有
阅读全文
摘要:placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。 它的原型如下: void *operator new( size_t, void *p ) t
阅读全文
摘要:1.背景: 在开发人员进行项目开发和调试代码时,有一个非常困扰的问题,就是程序在调试运行过程中会莫名其妙地异常退出。由于导致异常退出的问题非常多,因此在面对这种无任何提示的异常退出时,开发人员会非常无奈。因为他需要考虑最近的那些更改有可能导致这个错误的发生,万不得已,可能就需要把代码回退到某个版本,
阅读全文
摘要:多少年了,一直处于C与C++混用的状态,申请空间一直用malloc,释放空间一直用free,为什么?因为他们好理解易操作,就如同输出一直用printf而不用<<,输入一直用scanf而不用>>。如果用new和delete,就会涉及到数组的问题,而我却一直没有好好理解过这种情况。今天突然有兴致深入分析
阅读全文
摘要:关于 C++中new背后的行为, 以前已经写过一篇了 理解C++中new背后的行为, 但是里面也只是泛泛而谈,没有真凭实据, 下面我们从汇编的角度看C++编译器究竟在背后干了什么? 我们的代码很简单, 如下: #include <iostream> class A { public: virtual
阅读全文
摘要:今天和同事review代码时,发现这样的一段代码: Manager * pManager = new Manager(); if(NULL == pManager) { //记录日志 return false; } 然后,一个同事就说这样写欠妥,应该改为: Manager * pManager =
阅读全文
摘要:一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分? 一个Class对象需要占用多大的内存空间。最权威的结论是: *非静态成员变量总合。 *加上编译器为了CPU计算,作出的数据对齐处理。 *加上为了支持虚函数,产生的额外负担。 介绍完了理论知识后,再看
阅读全文
摘要:最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量。现在将其整理一下(共有三篇),希望对大家有所帮助。 目录如下: 1.《Windows系统CPU内存网络性能统计第一篇 内存》 2.《Windows系统CPU内存网络性能统计第二篇 CP
阅读全文
摘要:申请效率的比较 栈:由系统自动分配,速度较快。但程序员是无法控制的。 堆:是由new分配的内存,最好的方式是用VirtualAlloc分配虚拟内存,它既不是在堆也不是在栈,而是直接在进程的地址空间中保留一块内存,虽然用起来最不方便,但是速度快也最灵活。 http://blog.csdn.net/ho
阅读全文
摘要:相信经常用VC的朋友对屏幕输出的一大堆“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”不会陌生,但是也许会很奇怪,为什么会出现“烫”字呢?莫非改程序导致系统运行缓慢,发热过高???非也!下面让我解释一下吧,有错误的地方请指正:在上一篇文章中,我们逆向了Debug模式下的一个C程序,发现栈区开辟的存
阅读全文
摘要:原文地址:C++得到当前进程所占用的内存作者:雪碧狗 使用SDK的PSAPI (Process Status Helper)中的BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMORY_COUNTERS ppsmemCounters, DW
阅读全文