- 博客(9)
- 收藏
- 关注
原创 vector,string扩容与首地址
最近在查看vector动态扩容的时候,想到一个问题: vector动态扩容的时候,其内存是重新分配的,那么&vector岂不也是动态变化的,那么这将是一个严重的问题。验证代码如下:int main(){ vector<int> vec; for (int index = 0; index < 20; ++index) { vec.push_back(...
2019-04-30 21:18:47 626
原创 vc++ 内存泄漏定位
在源文件头部加入如下三行代码:#define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>在main函数返回前加入下面一行代码:_CrtDumpMemoryLeaks();测试代码如下:#define CRTDBG_MAP_ALLOC #include <st...
2019-04-02 10:30:47 265
原创 VC++ 查看原始内存值和分布
首先,我们执行到某处断点; 点击 调试==>窗口==>内存,选择内存块,结果如图所示:右键某个指针变量,复制值,粘帖到内存块 "地址搜索栏",确认后即会定位到该内存地址。从图中我们可以看到局部变量a,b相邻,保存的是其补码。...
2019-03-29 08:36:35 1577
原创 new || operator new || placement new || allocator的联系与区别
@ new我们通常使用:new AA 或 new AA[n]在堆上动态生成对象。事实上,此处的new 是 类AA的操作符(operator)。它其实分为三个步骤:1. 申请堆内存空间;2. 初始化对象;3. 返回对象指针。@ operator newoperator new为一个全局函数,其原型:void* operator new(std::size...
2019-03-28 16:47:52 284
原创 VC++ 查看函数的汇编代码
代码如图所示:我们在add函数中打上断点,执行后,停止该断点处,此时 点击 调试==>窗口==>反汇编,即可调出当前函数的汇编代码:有源码和汇编代码的对照,非常方便。...
2019-03-28 11:19:47 1484
原创 VC++ Call Stack调试
以代码为例:我们在add函数中打上断点,当程序执行到断点停止,我们调出 "调用堆栈" 框, 在其中可以查看当前的堆栈信息:通过右侧可以看出堆栈信息是按层列出的,最内层为当前函数add的栈信息,左侧即为栈内临时变量信息,包括堆信息;次一层即为调用add函数的disp函数,然后是main函数,依次类推;每一层的信息都可以进行查看。即在"调用堆栈"中,其将所有的函数栈进行了展...
2019-03-28 11:02:19 1115
原创 VC++ 查看类和对象的内存布局
类的内存布局1. 在工程属性,C/C++ ==> 命令行 ==> 其他选项(D) 中输入如下编译选项:@1: /d1reportSingleClassLayout<name> 查看指定类的内存布局; 如查看类A, /d1reportSingleClassLayoutA@2: /d1reportAllClassLayout 查看所有...
2019-03-28 09:53:22 585
原创 usb3.0 + win7 + u盘 + 裸机 系统安装
问题: #根据常规方法制作U盘系统盘,进入安装界面后,会提示“缺少所需的CD/DVD驱动器设备驱动程序“,无法进行下一步安装#导致的原因:系统中没有sub3.0的驱动,所以找不到U盘。解决方法: 1. 如果电脑上还有usb2.0,则可以切换到usb2.0进行安装; 2. 如果没有usb2.0, 那么需要在系统镜像中集成usb3.0的驱动。以下是如何...
2018-07-16 16:10:54 2065
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人