c++오류좀 잡아 주세요 ㅜㅜ
글쓴이: yyjjang9 / 작성시간: 금, 2014/10/03 - 5:08오후
char* newQ = new char[capacity]; for (int j =0; front <= (capacity / 2)-1;j++) { newQ[j] = q[front]; if (;front == (capacity / 2) - 1;) { front = 0; for (int i = 0; i < rear;) newQ[j++] = q[i++]; } } delete q; q = newQ;
다른 문장에서는 이상이 없는데 프로그램이 유독 이 문장에만 접근하면 디버그 오류가 뜨네요.
변수 선언에는 전혀 이상이 없고요. 동적할당 부분에서도 이상이 없습니다. 문장에서 어디가 잘못
되어서 그럴까요?
이 문장만 따로 떼어서 돌려보면 오류가 생깁니다. 왜 그럴까요 ㅜㅜ 알려주세요.
#include<iostream> using namespace std; int main(void) { char a[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; int capacity = 8; char* q = a; for (int i = 0; i < 8; q++) cout << q[i]; char* newQ = new char[capacity]; int front = 6; int rear = 2; for (int j = 0; j<=2; j++) { newQ[j] = q[front++]; if (j == 2) { for (int i = 0; i < rear;i++) newQ[j++] = q[i]; } } delete q; q = newQ; for (int i = 0; i < 8; i++) cout << q[i]; return 0; }
이 코드는 제가 따로 떼어서 돌려본 코드 입니다. 무엇이 잘못 되었나요?? 제발 알려주세요 ㅜㅜ,,.
Forums:
int front = 6;for (int j =
int front = 6;
for (int j = 0; j<=2; j++)
newQ[j] = q[front++];
문제가 보이지 않나요?
반복이 3번이루어지기 때문에 newQ에는 a배열의 범위를 넘어간 값이 저장되게 됩니다.
뭐 이것으로는 런타임에러가 발생하진 않을탠데,
문제는 delete q가 되겠네요.
a배열이 동적할당된것이 아닌 정적 배열이기 때문에
delete 구문은 작동하지 않습니다.
a배열을 new를 통해 선언하시거나 delete 구문을 지워줘야겠네요.
디버깅으로 확인 해보시기 바랍니다.
디버깅 하는 방법만 적어봤습니다.
내용은 이해하기 어렵네요. ㅇ_ㅇ;;
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기