
C++
huangdaxian114
C/C++/python/java/machine learning
展开
-
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 · 316 阅读 · 0 评论 -
VC++ 查看函数的汇编代码
代码如图所示:我们在add函数中打上断点,执行后,停止该断点处,此时 点击 调试==>窗口==>反汇编,即可调出当前函数的汇编代码:有源码和汇编代码的对照,非常方便。...原创 2019-03-28 11:19:47 · 1510 阅读 · 0 评论 -
VC++ Call Stack调试
以代码为例:我们在add函数中打上断点,当程序执行到断点停止,我们调出 "调用堆栈" 框, 在其中可以查看当前的堆栈信息:通过右侧可以看出堆栈信息是按层列出的,最内层为当前函数add的栈信息,左侧即为栈内临时变量信息,包括堆信息;次一层即为调用add函数的disp函数,然后是main函数,依次类推;每一层的信息都可以进行查看。即在"调用堆栈"中,其将所有的函数栈进行了展...原创 2019-03-28 11:02:19 · 1144 阅读 · 0 评论 -
VC++ 查看类和对象的内存布局
类的内存布局1. 在工程属性,C/C++ ==> 命令行 ==> 其他选项(D) 中输入如下编译选项:@1: /d1reportSingleClassLayout<name> 查看指定类的内存布局; 如查看类A, /d1reportSingleClassLayoutA@2: /d1reportAllClassLayout 查看所有...原创 2019-03-28 09:53:22 · 612 阅读 · 0 评论 -
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 · 288 阅读 · 0 评论 -
VC++ 查看原始内存值和分布
首先,我们执行到某处断点; 点击 调试==>窗口==>内存,选择内存块,结果如图所示:右键某个指针变量,复制值,粘帖到内存块 "地址搜索栏",确认后即会定位到该内存地址。从图中我们可以看到局部变量a,b相邻,保存的是其补码。...原创 2019-03-29 08:36:35 · 1608 阅读 · 0 评论 -
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 · 652 阅读 · 0 评论