-2
코드는 :이 코드가 segfault를 생성하는 이유는 무엇입니까?
#include <iostream>
using namespace std;
void mix(int *a, int *b, int *c, int m, int n)
{
int i, j = 0;
for(i = 0; i < m; i++)
{
if(a[i] % 2 == 0)
{
c[j] = a[i];
j++;
}
}
for(i = m - 1; i >= 0; i++)
{
if(a[i] % 2 == 1)
{
c[j] = a[i];
j++;
}
}
for(i = 0; i < n; i++)
{
if(b[i] % 2 == 0)
{
c[j] = b[i];
j++;
}
}
for(i = n - 1; i >= 0; i++)
{
if(b[i] % 2 == 1)
{
c[j] = b[i];
j++;
}
}
cout << j << ' ';
}
int main()
{
int a[10], b[10], c[20], m, n;
cout << "m: ";
cin >> m;
cout << "\nn: ";
cin >> n;
int i;
for(i = 0; i < m; i++)
{
cin >> a[i];
}
for(i = 0; i < n; i++)
{
cin >> b[i];
}
mix(a, b, c, m, n);
for(i = 0; i < (m+n); i++)
{
cout << c[i];
}
return 0;
}
나는 확인하고 내 배열의 크기를 재 점검하고 코드가 mix(...)
기능에 세그먼트 폴트를 생산 왜 알아낼 수 없습니다했습니다. -O2
최적화를 사용하는 데 문제가 될 수 있습니까? 또한, 인덱스가 일치하는지 확인했습니다. 나는이 문제가 c[j] = a[i]
과 같다고 생각하지만 왜 이것이이 세분화 오류를 일으키는 지 이해할 수 없다. 이 두 루프
의
i++
을하고 있었습니까? –'for (i = m - 1; i> = 0; i ++)'는 의심스러워 보입니다. 그게 무슨 뜻이야? – TNA
예제 입력 및 예상 출력 표시 –