程序出現運行時錯誤
問題描述
#include <algorithm>#include <iostream>#include <cmath>#include <vector>using namespace std;int countPrimes(int n) { if (n <= 2)return 0; vector<int> arr(n, 0); for (int i = 2; i <= sqrt(n); ++i) {if (!arr[i]) for (int j = i * i; j <= n; j += i) {arr[j] = 1; } } cout << arr[2] << endl; int j = 0; for (int i = 2; i <= n; ++i) {if (!arr[i]){ arr[j++] = i;} } cout << "j" << j << endl; int l = 0, r = j - 1; while (l <= r) {int m = (l + r) >> 1;cout << m << endl;cout << "arr[m]" << arr[m] << "n - 1" << n - 1 << endl;if (arr[m] == n - 1){ l = r = m; return l + 1;}else if (arr[m] < n - 1){ l = m + 1;}else r = m - 1;cout << "l = " << l << "r= " << r << endl;cout << "m=" << m << endl; } cout << l << endl; return 0;}int main(){ cout << countPrimes(6) << endl; return 0;}
在程序中加斷點,發現運行到return l + 1處時報錯,報錯信息如下

在VSCODE中還會彈出一個窗口,提示源 源未知 不可用

請問問題出在哪里了?謝謝了
問題解答
回答1:通常win平臺非預期的sigtrap都是heap corruption。再看你的代碼,第十六行arr[j] = 1; 明顯有invalid write。所以vector arr(n, 0);的n應該改大一點,比如n+1。
相關文章:
1. javascript - sublime快鍵鍵問題2. javascript - 移動端上不能實現拖拽布局嗎?3. 實現bing搜索工具urlAPI提交4. javascript - react native在run-android時出現這個錯誤該怎么解決?大神賜教5. thinkPHP5中獲取數據庫數據后默認選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙6. index.php錯誤,求指點7. javascript - 如何判斷不同兩個對象觸發同一事件?8. c++ - QWebEngineView加載url后直接點擊鏈接沒有反應要怎么解決?9. angular.js - 單頁應用(ng/vue)該如何監聽用戶離開當前頁面(或者路由)?10. 前端 - 這段代碼一直生效不了,查半天因為 top: 0px; 分號后一個隱藏的東西,也不是占位符...刪了就可以生效,這是什么情況。。

網公網安備