随笔分类 - C++ Memory
摘要:测试函数的模板实现 [cpp] view plain copy /// @file my_template.h /// @brief 测试数据类型用的模板实现 #ifndef MY_TEMPLATE_H_2016_0123_1226 #define MY_TEMPLATE_H_2016_0123_1
阅读全文
摘要:C++能在堆栈、堆、资料区创造对象。 但是Delphi只能在堆上创造对象
阅读全文
摘要:https://msdn.microsoft.com/en-us/library/ms810603.aspxhttps://www.codeproject.com/Articles/14525/Heap-Manager-for-Allocating-Memory-from-a-Shared-Mhtt
阅读全文
摘要:[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放
阅读全文
摘要:没有虚函数时 [cpp] view plaincopy /// @file test_class.c /// @brief 测试一个类有多个基类的内存布局(没有虚函数时, 有虚函数时) #include <stdlib.h> #include <stdio.h> class CA { public:
阅读全文
摘要:基础知识:堆 栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表。允许插入或删除操作的一端称为栈顶,另一端称为栈底,对堆栈的插入和删除操作被称 为入栈和出栈。有一组CPU指令可以实现对进程的内存实现堆栈访问。其中,POP指令实现出栈操作,PUSH指令实现入栈操作。CPU的ESP寄存器...
阅读全文
摘要:一.内存的分配方式1.程序代码区2.静态数据区3.动态数据区二.动态内存1.在栈上创建的内存2.从堆上分配的内存3.小结三.指针与内存1.操作内存2.指针与数组3.指针参数四.malloc/free与new/delete1. malloc/free的使用要点2. new/delete的使用要点3. ...
阅读全文
摘要:在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。我们还是先来看一段简单的程序: 程序一1#include2usingnamespacestd;34structX15{6inti;//4个字节7charc1;...
阅读全文
摘要:内存分配方式和调试机制M内存分配内存分配函数MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用。Win32的堆分配函数每一个进程都可以使用堆分配函数创建一个私有的堆──调用进程地址空间的一个或者多个页面。DLL创建的私有堆必定在调用DLL的进程的地址空间内,只能被调用进程访问。...
阅读全文
摘要:如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在。有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题。掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开发中的内存问题。5评论:杨 经(cdlyang...
阅读全文
摘要:1.dump文件2.程序对应的pdb步骤一:安装windbg步骤二:通过windbg打开crash dump文件步骤三:设置pdb文件路径,即符号表路径步骤四:运行命令!analyze -v,这是windbg提供的一个自动分析命令,正常情况下,会显示出导致崩溃的行为,其所在文件,以及其在文件中的具体...
阅读全文
摘要:通往WinDbg的捷径(一)原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDBWinDbg导言你钟情什么样的调试器?如果你问我这个问题,我会回答是“VisualStudio+WinDbg”。...
阅读全文
摘要:内存初始化当然有必然,但是不用memset,直接这样写就可以了:char* szRemoteFile = new char[MAX_LENGTH]();http://blog.csdn.net/passion_wu128/article/details/38964045
阅读全文
摘要:0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣。于是打算通过观察类在内存中的分布更好地理解类的实现。因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC,其编译环境为VC++,这里感谢@shenzhigang提醒。所以此处的标题为《VC++中的类的内...
阅读全文
摘要:智能指针算是很多人喜欢思考的一种内存管理方案了...虽然这种方案本身存在一些硬伤,但是在很多需要智能,且使用方式相对较简单的场合里应用还是比较多的.先发一个我最初写好的版本:[cpp]view plaincopy////////////////////////////////////////////...
阅读全文
摘要:Wrote bymutouyun. (http://darkc.at/about-data-structure-alignment/)1. 内存对齐(Data Structure Alignment)是什么内存对齐,或者说字节对齐,是一个数据类型所能存放的内存地址的属性(Alignment is a...
阅读全文
摘要:[cpp]view plaincopy#include#include#includeusingnamespacestd;intmain(){cout::max)();cout::min)()::max)();cout::min)()::max)();cout::min)()::max)();cou...
阅读全文
摘要:http://vld.codeplex.com/QT 内存泄露时,你们一般用什么工具检测啊------解决方案--------------------这篇你觉得详细么 :http://newfaction.net/2010/10/25/qt-experience-on-the-detection-o...
阅读全文
摘要:当 operator new 不能满足一个内存分配请求时,它抛出一个 exception(异常)。很久以前,他返回一个 null pointer(空指针),而一些比较老的编译器还在这样做。你依然能达到以前的目的(在一定程度上),但是我要到本文的最后再讨论它。 在 operator new 因回应一...
阅读全文
摘要:引言:C++中总共有三种方式可以分配内存,new operator, operator new,placement new。一,new operator这就是我们最常使用的 new 操作符。查看汇编码可以看出:它不是一个函数,所以没有堆栈信息,而且它不能被重载。请看下面一段代码:[cpp]view ...
阅读全文