小白提问:C++提示interrupted by signal 11: sigsegv

xxlearnscoding 2021-03-21 01:23:01
零基础转行的小白...连写了两个程序都出现这个问题,搜了一下发现应该是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] << " ";
}

万分感谢!!
...全文
3514 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-03
  • 打赏
  • 举报
回复
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
xxlearnscoding 2021-03-21
  • 打赏
  • 举报
回复
哇原来如此!谢谢你!
真相重于对错 2021-03-21
  • 打赏
  • 举报
回复
越界了 if (range [arr[i]] != -1) { //这句话,因为i最大为6,而arr最多有效元素是6个,所以arr[6]是无效元素,因此越界

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧