記一次原始碼分析
首先分析一段很短的程式碼
#include<iostream> #include<vector> using namespace std; vector<int> getdata(){ vector<int> v{2,3,4,5,6}; // return std::move(v); return v; } int main() { //vector<int> temp(getdata());
auto b=begin(getdata());
cout<<*b;
//以下方式輸出正常
for(auto i: getdata()){
cout<<i;
}
return 0; }
這段程式碼是錯的,裡面出現了一個很容易犯得bug/如果函式中有建立本地物件並需要返回時,只能返回物件,不能返回指標或引用,因為函式呼叫完後,這個物件也就會隨之進行析構(釋放),但是如果我們試著返回一個vector的本地物件時然後對這個本地物件直接呼叫begin()函式得到的卻不是我們想要的,然後我就去單步除錯了/去挑戰
//說明環境 我用的是mingw編譯器 g++
首先分配記憶體,這個肯定不用多說
相關推薦
記一次原始碼分析
首先分析一段很短的程式碼 #include<iostream> #include<vector> using namespace std; vector<int> getdata(){ vector<int> v{2,3,4,5,6
記一次iotop分析磁碟佔用io問題
問題描述 某一臺伺服器上面 程式在每小時內偶爾丟包 排查伺服器所有效能瓶頸之後發現一個奇怪的問題 程式丟包前後 會有IO過高的情況 於是使用iotop命令排查是哪個程式偶爾佔用過高的磁碟IO所用命令 io
記一次 JVM 原始碼分析(3.記憶體管理與GC)
簡介 miniJVM 的記憶體管理的實現較為簡單 記憶體分配使用了開源的 ltalloc 庫 GC就是經典的 Mark-Sweep GC 物件分配 物件分配要關注的就兩個過程 New 一個 Java 物件的過程 記憶體塊在堆上分配的過程 物件在 JVM
記一次 JVM 原始碼分析(4.直譯器與方法執行)
簡介 miniJVM 作為一個 mini 的 Java VM,實現了 Switch 直譯器,並不支援主流 JVM 的 JIT 或者更為複雜的 AOT。但這樣對於我們瞭解位元組碼的執行已經足夠了。 位元組碼指令 基於堆疊 位元組碼指令類似於彙編指令,但是不同的是:
記一次 JVM 原始碼分析(5.異常處理)
異常列印 Java 如果發生異常,通常會呼叫 Throwable.printStackTrace 去列印堆疊資訊。 堆疊資訊包括完整類名,方法名,java 檔名,行號 而這樣的資訊根據發生 Crash 執行緒所經歷的n個方法會打印出n行。 整個過程被稱為棧回朔
【Mybatis原始碼分析】13-記一次PageHelper reasonable引數使用不當造成的死迴圈
問題描述及原因 使用Mybatis PageHelper外掛做了表的分頁查詢,要求查詢符合某一條件的所有記錄做處理,就寫了一個迭代器在while迴圈裡對每條記錄做處理,直到符合條件的記錄都處理完程式返回。程式碼如下 public class ReconPaymentI
記一次對java對象在內存中的分析
數據 ots 字節對齊 位數 數據位 64位 數組 內存大小 特殊 java 對象 占內存大小 計算方式 及 常用類型的占用 HotSpot的對齊方式為8字節對齊 ----計算公式:(對象頭 + 實例數據 + padding) % 8等於0且0 <= padding
記一次OGG數據寫入HBase的丟失數據原因分析
hat xdg column 安裝 tint b- 主鍵 取余 bst 一、現象二、原因排查2.1 SparkStreaming程序排查2.2 Kafka數據驗證2.3 查看OGG源碼2.3.1 生成Kafka消息類2.3.2 Kafka配置類2.3.3 Kafka 消息發
記一次lvs-tunnel模式的故障分析(SYN_REC)
過濾 oot som 一次 hose 不知道 也會 推理 min 一、測試環境 類型 IP 負載均衡器 eth0:10.20.73.20 VIP eth0:0 10.20.73.29 後端真實機 10.0.0.7(web01)、10.0.0.9(we
記一次Java的內存泄露分析
新項目 引用 極限 out size exce -a 場景 tpc 當前環境 jdk == 1.8 httpasyncclient == 4.1.3 代碼地址 git 地址:https://github.com/jasonGeng88/java-network-prog
記一次網上流量分析題
words itl word 很多 release sctf 數據包 base 沒有 這是捕獲的黑客攻擊數據包,LateRain用戶的密碼在此次攻擊中泄露了,你能找到嗎? FLAG格式:SCTF{LateRain的明文密碼} LINK: http://pan.baidu.c
記一次內存溢出的分析經歷——thrift帶給我的痛orz
一個bug 服務端 ide 參數 comment ces 結果 業務 改變 說在前面的話 朋友,你經歷過部署好的服務突然內存溢出嗎? 你經歷過沒有看過Java虛擬機,來解決內存溢出的痛苦嗎? 你經歷過一個BUG,百思不得其解,頭發一根一根脫落的煩惱嗎? 我知道,你有過! 但
記一次Ceph日誌損壞的分析處理過程
Ceph 日誌 1、故障現象 今天下午看到群友在說一個問題,說ceph的某個osd處於down的狀態,我大概整理下他的處理過程 1、查看OSD的狀態2、查看日誌信息3、啟動對應的ceph-osd服務4、檢查集群健康狀態 2、日誌損壞了,如何讓osd重新上線 思路:重建日誌a、先把/var/lib/ce
記一次常規的Mysql數據庫訪問的時間分析
客戶端 tcp三次握手 alt 時間 res src img gree 分析 背景:記一次常規的數據訪問的時間分析(插入操作) 1. TCP三次握手 SYN ---> <--- SYN,ACK ACK ---> 花費時間: 386.718-38
記一次簡單的日誌分析
題目檔案:https://files.cnblogs.com/files/nul1/access.log.tar 直接搜尋flag發現是一題關於二分法注入。 頁面為200的位元組大小為1765,所以可以通過讀取每行判斷是否有1765以及有沒有flag的關鍵字樣,進而提取值。 指令碼如
記一次某App反編譯分析
每次尋找漏洞的時候,我都喜歡從抓包開始 噢噢,這裡有點尷尬~~請求和返回的資料都進行了加密處理,這波操作我挺喜歡的,證明人家公司的開發人員還是有點安全意識的,不過沒有關係,他有張良計,我有過牆梯,先反編譯一波看看,使用的工具是 jadx 很明顯,app用了360加固
記一次通過v$active_session_history來分析問題的案例
關於:v$active_session_history是oracle中一個最重要的檢視之一,該檢視每秒一次記錄當前資料庫中的活動程序相關的資訊,可以用於問題的分析和診斷;同時awr還會將部分v$active_session_history中的部分記錄保留到dba_hist_a
記一次 MySQL semaphore crash 的分析(有彩蛋)
文章來源:愛可生雲資料庫作者:洪斌 DBA應該對InnoDB: Semaphore wait has lasted > 600 seconds. We intentionally crash the server because it appears to b
記一次WMS的系統改造(1)-分析問題
海外落地中的困境 目前面臨主要的問題是“人”,倉儲系統主要輔助倉儲人員進行生產,所以人變了其實一切就都已經變了,系統在海外面臨最大的問題就是人變了。 這套軟體是在國內的運營體系下,用國內運營兄弟的設計一點一點打造出來的,雖有人員更替但運營理念和操作經驗卻被固化在生產環境中代代相傳了下來。到國外後,有一
資訊系統故障分析案例---------記一次效能檢測系統故障排查
2018年10月10日凌晨2點接到信調值班員電話,單位資訊運維統一監管(I6XXX)系統報警顯示公司門戶和網站系統性能檢測報警,頁面訪問響應時長和模擬登入功能異常,實際情況是網站和門戶系統執行正常,稍有寬心,現在單位執行指標考核太變態,壓力太大啊。立即開始協