zoukankan      html  css  js  c++  java
  • 今天才学会的DevC++调试器查看连续内存STL容器内值的方法(DevC++)

    众所周知,DevC++是一个bug层出不穷的过时的IDE

    但因为编译single source方便,简单易上手,还有一些OIer(包括蒟蒻)仍在使用它

    如何避免在调试的时候一碰到或者查看C++的一些东西(比如STL容器,cout)就卡住,在OI在役的时候就一直困扰着我

    没想到退役这么久后突然发现有一部分有解决方案了


    这个方法本来是解决调试器不把指针认为是数组的问题的

    像上面这个例子,a是一个数组,p是一个指向数组的指针,调试器看a能看到整个数组,看p却只能看到这个地址的16进制值

    我们添加查看*p@5,这个神奇的@表示从内存里p指的位置开始连续读5个相同类型的值,就解决了上面提到的问题


    于是我们也可以解决查看vector的问题了

    添加查看a:不行,一是会卡住,二是看到的是一个结构体,有指向内存的指针,但看不到数

    添加查看a[0]:能看,不会卡住

    添加查看&a[0] *&a[0]:能看,得到了连续内存的起始地址,相当于得到了一个指向数组的指针

    添加查看*&a[0]@5:我们看到了整个数组

    这种方法适用于使用连续内存的STL容器,比如vector queue string

    诸如list map的话还是只好老老实实printf了

    ref:https://blog.csdn.net/qq_35818307/article/details/104965670

  • 相关阅读:
    第二阶段冲刺记录八
    用户体验评价
    找水王
    第二阶段冲刺记录七
    第二阶段冲刺记录六
    第14周学习进度
    第二阶段冲刺记录五
    第二阶段冲刺记录四
    第一阶段意见评论
    IP协议号大全
  • 原文地址:https://www.cnblogs.com/flashhu/p/15727005.html
Copyright © 2011-2022 走看看