leetcode报错:reference binding to misaligned address 0xbebebebebebec0ba for type ‘int‘, which requir 4
生活随笔
收集整理的這篇文章主要介紹了
leetcode报错:reference binding to misaligned address 0xbebebebebebec0ba for type ‘int‘, which requir 4
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
leetcode,劍指offer 31題報錯:
Line 170: Char 16: runtime error: reference binding to misaligned address 0xbebebebebebec0ba for type 'int', which requires 4 byte alignment (stl_deque.h) 0xbebebebebebec0ba: note: pointer points here <memory cannot be printed> SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_deque.h:180:16
代碼:
class Solution { public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> stk;int i = 1, j = 0, n = pushed.size();// if(n == 0)if(n == 0 || (n == 1 && pushed[0] == popped[0])){return true;}stk.push(pushed[0]);while(i < n){while(i<n && stk.top() != popped[j]){stk.push(pushed[i]);++i;}while(!stk.empty() && stk.top() == popped[j]){stk.pop();j++;}}return stk.empty();} };原因:
網上查是數組越界問題,經檢查程序驗證:
為非法訪問地址,不只是數組越界。本程序報錯原因為:
棧stack<int> stk;為空時訪問了stk.top()。
解決辦法:
stk.top()前加一個棧空判斷即可,即stk.empty() && stk.top();
改正后代碼:
class Solution { public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> stk;int i = 1, j = 0, n = pushed.size();if(n == 0 || (n == 1 && pushed[0] == popped[0])){return true;}stk.push(pushed[0]);while(i < n){while(i < n && (stk.empty() || stk.top() != popped[j])){stk.push(pushed[i]);++i;}while(!stk.empty() && stk.top() == popped[j]){stk.pop();j++;}}return stk.empty();} };總結
以上是生活随笔為你收集整理的leetcode报错:reference binding to misaligned address 0xbebebebebebec0ba for type ‘int‘, which requir 4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存测试(ubuntu)
- 下一篇: 建立新零售生态系统的基本准则及数字化订单