今天才學會的DevC++調試器查看連續內存STL容器內值的方法

衆所周知,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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章