zoukankan      html  css  js  c++  java
  • cl查看类的内存布局

    查看单个类的内存布局


           Microsoft Visual Studio编译器cl的编译选项可以查看源文件中某个C++类的内存布局,对于想了解某个对象的内存布局的人来说十分直观和方便。

    • 命令格式

           cl <FileName> /d1reportSingleClassLayout[ClassName]

           FileName            : 文件名,包含文件路径。
           d1reportSingleClassLayout 
    : 编译器选项。
           ClassName          
    : 待查看内存布局的目标类,需要注意ClassName和d1reportSingleClassLayout选项之间没有空

    • 使用方法

           开始 -> 所有程序 -> Microsoft Visual Studio 20XX -> Visual Studio Tools -> Visual Studio 20XX 命令提示;

           C:Program Files (x86)Microsoft Visual Studio 11.0VC>cl D:workspacec++TestTest.cpp /d1reportSingleClassLayoutDerived

    • 使用实例

           我们有如下一段代码,并且我们需要查看Derived类的内存布局。

    // Test.cpp
    #include <stdio.h>
    
    class Base
    {
    private:
        unsigned m_uCounter;
    
    public:
        Base() : m_uCounter(0) {}
        virtual ~Base() {}
    
    public:
        virtual void PrintHello()
        {
            printf("Base Class Prints Hello!");
        }
    };
    
    class Derived : public Base
    {
    private:
        unsigned m_uNumber;
    
    public:
        Derived() : m_uNumber(0) {}
        virtual ~Derived() {}
    
    public:
        virtual void PrintHello()
        {
            printf("Derived Class Prints Hello!");
        }
    };
    
    int main()
    {
        Base *pBase = ::new Derived;
        pBase->PrintHello();
        delete pBase;
        return 1;
    }

            在VS命令提示工具下输入cl D:workspacec++TestTest.cpp /d1reportSingleClassLayoutDerived之后控制台输出为:

    查看所有类的内存布局


           除了d1reportSingleClassLayout选项之外,还有另外一个选项d1reportAllClassLayout可以用于查看某个源文件中所有类的内存布局信息。

    • 命令格式

           cl <FileName> /d1reportAllClassLayout

           FileName        : 文件名,包含文件路径。

           d1reportAllClassLayout   : 编译器选项。

    • 使用方法

           开始 -> 所有程序 -> Microsoft Visual Studio 20XX -> Visual Studio Tools -> Visual Studio 20XX 命令提示;

           C:Program Files (x86)Microsoft Visual Studio 11.0VC>cl D:workspacec++TestTest.cpp /d1reportAllClassLayout

    • 使用实例

           以上述代码为例,我们得到的输出如下所示。

  • 相关阅读:
    CodeForces 454C——数学——Little Pony and Expected Maximum
    7.23多校——5305DFS——Friends
    Codeforces Round #313 (Div. 2)——C数学题——Gerald's Hexagon
    Codeforces Round #313 (Div. 2)——D递归,stirng——Equivalent Strings
    Codeforces Round #312 (Div. 2)——C暴力技巧——Amr and Chemistry
    简单几何(线段覆盖) POJ 3347 Kadj Squares
    DP+BIT(优化复杂度) UESTC 1217 The Battle of Chibi
    DP(01背包) UESTC 1218 Pick The Sticks (15CCPC C)
    二叉树的前中后序遍历以及表达式树
    DP(优化) UVALive 6073 Math Magic
  • 原文地址:https://www.cnblogs.com/heartchord/p/4861487.html
Copyright © 2011-2022 走看看