• 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

    • 使用实例

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

  • 相关阅读:
    7、css基本选择器、层叠样式
    6、表格标签及表单标签
    5、head内常用标签
    4、body内常用符号
    3、HTML简介
    2、HTTP协议
    Mbedtls和Opesnssl 解码x509Certificate
    Django 学习5--DetailView
    Django 学习四--bootstrap
    Django 学习3--CreateView
  • 原文地址:https://www.cnblogs.com/heartchord/p/4861487.html
Copyright © 2020-2023  润新知