零基礎轉行的小白...連寫了兩個程式都出現這個問題,搜了一下發現應該是segmentation fault但還是找不出問題所在。其中一題function代碼如下:
#include <iostream>
using namespace std;
const int N = 6;
int* findMissing(int arr[], int n, int& resArrSize);
void printArray(int* arr, int arrSize);
int main() {
int arr[N] = {3, 1, 3, 0, 6, 4};
int resArrSize;
int* missingArr = NULL;
missingArr = findMissing(arr, N, resArrSize);
cout << "The logical size of the new array is " << resArrSize << endl;
printArray(missingArr, resArrSize);
delete []missingArr;
missingArr = NULL;
return 0;
}
int* findMissing(int arr[], int n, int& resArrSize) {
int i, j;
int missingArrSize;
int* range = new int [n + 1];
for (i = 0; i < (n + 1); i++) {
range [i] = i;
}
missingArrSize = n + 1;
for (i = 0; i < (n + 1); i++){
if (range [arr[i]] != -1) {
range [arr[i]] = -1;
missingArrSize--;
}
}
j = 0;
int* missingArr = new int[missingArrSize];
for (i = 0; i < (n + 1); i++) {
if (range [i] != -1){
missingArr [j] = range[i];
j++;
}
}
delete []range;
range = NULL;
resArrSize = missingArrSize;
return missingArr;
}
void printArray(int* arr, int arrSize){
int i;
for (i = 0; i < arrSize; i++)
cout << arr[i] << " ";
}
萬分感謝!!
uj5u.com熱心網友回復:
越界了if (range [arr[i]] != -1) { //這句話,因為i最大為6,而arr最多有效元素是6個,所以arr[6]是無效元素,因此越界
uj5u.com熱心網友回復:
哇原來如此!謝謝你!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269142.html
標籤:C語言
下一篇:c++退出程式
